| Author |
Message |
lokaum
Joined: 25 Dec 2006 Posts: 29
|
Posted: Fri Dec 29, 2006 10:01 pm Post subject: Crafter Gate |
|
|
Hi People,
i have a problem with a script..
craftermine.src
| Code: | use os;
use uo;
include "include/classes";
program minocgate (who)
var crafter := GetObjProperty (who,"IsCrafter");
if (crafter)
MoveCharacterToLocation( who, 6001, 1519, 0 );
SendSysMessage( who, "Welcome to Crafter Area!",3,63);
else
SendSysMessage( who, "You must be qualified as a crafter to enter in the Crafter Area",3,33);
endif
endprogram |
This script verify if the player is a crafter...
but i want that this script verify if the player have minimum 3 crafter skills higher 129... to can enter in arena...
can anyone help me? |
|
 |
|
|
 |
 |
|
 |
 |
| Author |
Message |
SMJ
Joined: 10 May 2006 Posts: 113
|
Posted: Sat Dec 30, 2006 11:15 pm Post subject: |
|
|
The problem is that you're expecting us to write your code for you. Most people are busy writing their own scriptbases, and don't have time to write yours for you.
But, just to push you in the right direction, what I would do is:
- Write a config file containing the skills that I want to be considered "CraftSkills" as entrys.
| Code: | CraftSkills SkillList
{
SkillID 0 // The Skill ID
AttributeID Alchemy // The Skill Name
// etc.
} |
Write an include file to externalize access to the file.
[b]IsCrafter.inc[b] | Code: | ...
function IsCraftSkill( skill )
var craft_skill_cfg := ReadConfigFile("CraftSkills");
craft_skill_cfg := craft_skill_cfg["SkillList"];
var craft_skill_list;
if( Type(skill) == Type("") )
craft_skill_list := GetConfigIntArray(craft_skill_cfg,"SkillID");
elseif( Type(skill) == Type(0) )
craft_skill_list := GetConfigStringArray(craft_skill_cfg,"AttributeID");
endif
if( skill in craft_skill_list )
return 1;
endif
return 0;
endfunction
function IsCrafter(byref who)
var craft_skill_cfg := ReadConfigFile("CraftSkills");
craft_skill_cfg := craft_skill_cfg["SkillList"];
var craft_skill_list := GetConfigIntArray(craft_skill_cfg,"AttributeID");
var num_skills;
foreach craft_skill in craft_skill_list
if( GetAttribute(craft_skill) > 12900 ) // 129 * 100
num_skills := num_skills + 1;
endif
endforeach
if( num_skills >= 3 )
return 1;
endif
return 0;
endfunction |
Use it.
| Code: | ...
// var crafter := GetObjProperty (who,"IsCrafter");
var crafter := IsCrafter(who);
... |
I know that I just contradicted myself and wrote it for you; but it's imperfect, and I'll leave the debugging and fixing to you.
In the future, please try harder to move away from being a Type1 POL User. |
|
 |
|
|
 |
 |
| Author |
Message |
lokaum
Joined: 25 Dec 2006 Posts: 29
|
Posted: Sun Dec 31, 2006 10:27 am Post subject: |
|
|
it dont work
if you want... i have other script..
| Code: |
Use os;
Use uo;
Include "include/client";
Include "include/classes";
Program Gate_Crafters( who )
Var level;
Foreach classe in GetClasseIds()
EraseObjProperty( who , classe );
level := IsFromThatClasse( who , GetClasseSkills(classe) );
If( level )
SetObjProperty( who, classe, level );
Endif
Endforeach
Var CLvl := GetLevel( Who );
If( IsCrafter( who ) && CLvl >= 3 )
MoveCharacterToLocation( who, 1260, 1243, 0 );
SendSysMessage( who, "Welcome to the Crafters Mine.", FONT_BOLD, 2600 );
SendSysMessage( who, "This is a No-Pk/Looting Zone!", FONT_BOLD, 2611 );
Else
SendSysMessage( who, "You must be a Level 3 Crafter to enter.", FONT_BOLD, 2611 );
Endif
EndProgram
Function GetLevel( Who )
Var level;
Foreach classe in GetClasseIds()
EraseObjProperty( who , classe );
level := IsFromThatClasse( who , GetClasseSkills(classe) );
If( level )
SetObjProperty( who, classe, level );
Return level;
Endif
Endforeach
EndFunction |
|
|
 |
|
|
 |
 |
|