strval – funkcija naudojama konvertuoti strint į integer.
new result[40]; mysql_fetch_field_row(result,"Skinid"); new skindid = strval(result);
Lengva, paprasta.
Čia yra visos pamokos pradedantiesiems
strval – funkcija naudojama konvertuoti strint į integer.
new result[40]; mysql_fetch_field_row(result,"Skinid"); new skindid = strval(result);
Lengva, paprasta.
Pradėsime.
pamokoje naudosime funkcija GetArgument, jeigu jos neturite isidekite i gamemode gala:
stock GetArgument(argument, const string[], untillend){ new index = 0; new end = 0; new returns[256]="0"; for(new loop = 0; loop < argument; loop++){ index = strfind(string," ",true,index)+1; if(!strcmp(string[index]," ",true,1)){return returns;} if (index == 0){return returns;} } if(untillend == 0){ end = strfind(string[index]," ",true,0);} if (end== -1 || untillend==1) end = 256-index; strmid(returns,string[index],0,end); return returns; }
pirmiausia susikurkime kintamaji kuriame norėsime atvaizduoti kito žaidėjo id.
tai viršuje rašome:
new pID[MAX_PLAYERS];
šis dalykas labai praverčia kuriant komandą, pvž nori padaryti /get su susitarimu ar šiaip kokią komandą.
if (strcmp("/tavocmd", cmdtext, true, 8) == 0) { // komanda naudotume /tavocmd žaidėjoid pID[playerid] == strval(GetArgument(1,cmdtext,0)); // atvaizduojame id na o toliau darome ka norime pvz duosime zaidejui koki nors ginkla per dialog ShowPlayerDialog(playerid,212,DIALOG_STYLE_INPUT,"Ginklai","Duoti zaidejui ginklu:","Gerai","Iseiti"); return 1; }
komanda padareme dabar kad viskas veiktu reikia pratesti.
Po callback:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) {
kuriame toliau koda
if(dialogid == 212) // jeigu dialogid lygus nustatytam ID komandoje { if(response) // jeigu mygtukas 'Gerai' { GivePlayerWeapon(pID[playerid],21,inputtext); // duosime ginklu zaidejui kuri nurodeme rasydami komanda pID[playerid] = 0; // padarome kintamojo reiksme i 0 } return 1; }
Stai ir pamoka baigta, gero naudojimo 🙂
strmid – tai funkcija kuri leidzia atvaizduoti varda, ar siaip kazkoki teksta i kintamaji. Naudojimas :
strmid(pirmaskintamasis,antraskint,0,ilgis teksto,ilgis teksto);
paprastas kodas:
new vardas[MAX_PLAYER_NAME],vardas1[24],msg[100]; GetPlayerName(playerid,vardas,MAX_PLAYER_NAME); // gauname zaidejo varda strmid(vardas1,vardas,0,24,24); // formatuojam format(msg,100,"Tavo vardas: %s",vardas1); SendClientMessage(playerid,-1,msg);
nebutinai turi buti toks naudojimas, gali buti ir kitokiems tekstams, pvz MySQL bazeje isirasau ten koki nors pavadinima ir noriu ji patalpinti i GUI lentele:
mysql_query("SELECT Pavadinimas FROM darbai"); // pasirenkame pavadinima mysql_store_result(); while(mysql_retrieve_row()) { new result[50],pavadinimas[50]; mysql_fetch_field_row(result,"Pavadinimas"); strmid(pavadinimas,result,0,50,50); new msg[100]; format(msg,100,"Darbo pavadinimas:%s",pavadinimas); ShowPlayerDialog(playerid,2,DIALOG_STYLE_MSGBOX,"Darbai",msg,"Gerai",""); }
Gal bus aiskiau kaip viskas padaryti 🙂
Gero naudojimo 🙂
Mašinos funkcijos(ne visos):
GetPlayerVehicleId(playerid) – gauna masinos id kurioje sedi zaidejas.
SetVehicleHealth(vehicleid, VALUE); padaro masinos gyvybes i nustatyta skaiciu
pvz:
CMD:masina(playerid,params[]) { new vehicleid = GetPlayerVehicleId(playerid); SetVehicleHealth(vehicleid, 1000); return 1; }
Stai ir paprasta komanda.
GetVehiclePos(vehicleid, Float:x,Float:y,Float:z) – gauna masinos koordinates. pvz:
IsPlayerInAnyVehicle(playerid) funkcija kuri parodo ar zaidejas masinoje ar ne. paprastas patikrinimas:
CMD:arasmasinoje(playerid,params[]) { if(IsPlayerInAnyVehicle(playerid)) // jeigu masinoje { SendClientMessage(playerid,-1,"Taip tu masinoje"); return 1; } if(!IsPlayerInAnyVehicle(playerid)) // jeigu ne masinoje { SendClientMessage(playerid,-1,"Tu ne masinoje"); return 1; } return 1; }
Einame į data/playerDB.txt
ir rašome prie visų new,
amfa, hero,
po OnPlayerCommandText dedame:
if(strcmp(cmdtext, "/hnaudoti", true)==0) // heroino naudojimo cmd { SetPlayerWeather(playerid,-84); SetPlayerHealth(playerid,120); SendClientMessage(playerid,COLOR_GREEN,"Jus sunaudojote heroino"); SetTimerEx("KitasOras",60000,false,"e",playerid); SetTimerEx("KeiciamGyv",20000,false,"e",playerid); ApplyAnimation(playerid,"PED","WALK_DRUNK",4.1,1,1,1,1,1,1); playerDB[playerid][hero] -=1; return 1; } if(strcmp(cmdtext, "/anaudoti", true)==0) // amfetamino naudojimo cmd { SetPlayerWeather(playerid,-84); SetPlayerHealth(playerid,120); SendClientMessage(playerid,COLOR_GREEN,"Jus sunaudojote Amfetamino"); SetTimerEx("KitasOras",120000,"e",false,playerid); SetTimerEx("KeiciamGyv",20000,"e",false,playerid); ApplyAnimation(playerid,"PED","WALK_DRUNK",4.1,1,1,1,1,1,1); playerDB[playerid][amfa] -=1; return 1; }
gamemodo gale dedame :
forward KitasOras(playerid); public KitasOras(playerid) { SetPlayerWeather(playerid,1); SendClientMessage(playerid,COLOR_GREEN,"narkotiku poveikis baigesi"); return 1; } forward KeiciamGyv(playerid); public KeiciamGyv(playerid) { SetPlayerHealth(playerid,20); return 1; }
Truputį apie funkcijas.
SetPlayerWeather(playerid,-84); Šita funkcija pakeičia orą, atrodo kad tikrai esi panaudojęs narkotikų, pradeda judėti medžiai, aišku galima pakeisti skaičiū į savo norima oro ID.
SetPlayerHealth(playerid,120); Padaro žaidėjo givybes į 120.
SendClientMessage(playerid,COLOR_GREEN,“Jus sunaudojote heroino“); – parašo norimą žinutę. Šiuo metu ji nustatyta.
SetTimerEx(“KitasOras“,60000,false,“e“,playerid); – iškviečiam funkciją po 1 minutės, kad pakeistų į normalų orą.
SetTimerEx(“KeiciamGyv“,20000,false,“e“,playerid); – Kad sumažint žaidėjo givybes iškviesta kita funkcija.,
ApplyAnimation(playerid,“PED“,“WALK_DRUNK“,4.1,1,1,1,1,1,1); – Nustato animaciją.
playerDB[playerid][hero] -=1; – nuimam vieną narkotikų paketą.
Parsisiunciame moda jeigu neturime: http://www.failai.lt/2r4qegse9v1d/GRP4.rar.htm
Isekstraktuojame
Cia parsisiunciame http://sa-mp.com/download.php WINDOWS SERVERI
Isextraktini
tada nurodytus apacioje failus sukeli i savo moda:
pawno
announce.exe
samp-npc.exe
samp-server.exe
Ir jau turi 0.3x serveri 🙂