stock SendFormatText(playerid,farbe,const format[], {Float,_}:...){ new string[128]; format(string,128,format,float); SendClientMessage(playerid,farbe,string); return 1;}
ungetestet
/edit 1/
das new entfernt
/edit 2/
das Farbe zu farbe gemacht
stock SendFormatText(playerid,farbe,const format[], {Float,_}:...){ new string[128]; format(string,128,format,float); SendClientMessage(playerid,farbe,string); return 1;}
ungetestet
/edit 1/
das new entfernt
/edit 2/
das Farbe zu farbe gemacht
So sicher fragt ihr euch jetzt was ich damit meine, ich meine damit das jeder Spieler seinen Payday bekommt wenn er 60 Minuten / oder angepasst voll hat.So was wir als erstes Brauchen ist ein enum wo die Variable rein muss es sei denn ihr benutzt PlayerVariablen (PVars) dann halt auch ohne enum^^
Schritt 1:
enum sinfo
{
NextPayday, // die variable
P_Timer //Falls ihr MySQL benutzt, solltet ihr das am Besten ganz Unten stehen haben
}//das kommt einfach bei euren variablen rein wo ihr PlayerInfo/Spieler o.ä. benutzt
new Acc[MAX_PLAYERS][sinfo];
so nun Schritt 2: die Login/Register Geschichte
da jedes Login/Register System anders ist benutze ich einfach ein Standart von dini und mein eigenes mit PVars
//ACHTUNG NUR FÜR ENUM BENUTZER!!!!!!
//OnDialogResponse
if(dialogid == Dialog_Login)//der Login Dialog!
{
//string definition etc.
//alle eure Variablen
Acc[playerid][NextPayday] = dini_Int(string,"NextPayday"); //wo ihr das gespeichert habt
//und nun ganz wichtig!
Acc[playerid][P_Timer] = SetTimerEx("PaydayTimeCheck",60000,1,"i",playerid); //PaydayTimeCheck ist der Public der kommt in den nächsten Schritten, 60000 sind 1 minute d.h. er fragt jede minute ab, der Rest ist klar
}
if(dialogid == Dialog_Reg) // der Register Dialog!
{
//string etc.
//variablen
Acc[playerid][NextPayday] = 0;
dini_IntSet(string,"NextPayday",0); // das der schonmal die Datei hat
Acc[playerid][P_Timer] = SetTimerEx("PaydayTimeCheck",60000,1,"i",playerid); // wie oben!
}
//PVars
if(dialogid == Dialog_Login)//der Login Dialog!
{
//string definition etc.
//alle eure Variablen
SetPVarInt(playerid,"NextPayday",dini_Int(string,"NextPayday")); //wo ihr das gespeichert habt
//und nun ganz wichtig!
Acc[playerid][P_Timer] = SetTimerEx("PaydayTimeCheck",60000,1,"i",playerid); //PaydayTimeCheck ist der Public der kommt in den nächsten Schritten, 60000 sind 1 minute d.h. er fragt jede minute ab, der Rest ist klar
}
if(dialogid == Dialog_Reg) // der Register Dialog!
{
//string etc.
//variablenSetPVarInt(playerid,"NextPayday",0);
dini_IntSet(string,"NextPayday",0); // das der schonmal die Datei hat
Acc[playerid][P_Timer] = SetTimerEx("PaydayTimeCheck",60000,1,"i",playerid); // wie oben!
}
Bevor wir die Funktionen schreiben, gehen wir noch zu OnPlayerDisconnect, damit es nicht zu Lags kommt
public OnPlayerDisconnect(playerid,reason)
{
KillTimer(Acc[playerid][P_Timer]); // Das sorgt für weniger Lags, da der User mit dem Timer geht
}
nun fragen wir mal den Public ab dafür brauchen wir auch ein forward!
forward PaydayTimeCheck(playerid);
forward Payday(playerid);
public PaydayTimeCheck(playerid)
{ //für enum nutzer
if(Acc[playerid][NextPayday] < 60)
Acc[playerid][NextPayday] += 1; // da wird die variable da die kleiner als 60 ist +1 gemacht
if(Acc[playerid][NextPayday] == 60) {
Payday(playerid);
Acc[playerid][NextPayday] = 0;
}
//für PVar Nutzer
if(GetPVarInt(playerid,"NextPayday") < 60)
SetPVarInt(playerid,"NextPayday",GetPVarInt(playerid,"NextPayday")+1);
if(GetPVarInt(playerid,"NextPayday") == 60)
{
Payday(playerid);
SetPVarInt(playerid,"NextPayday",0);
}
return 1;
}
public Payday(playerid)
{
//Das müsst ihr anpassen!
return 1;
}
Es ist nur ein Kleiner Change, aber trotzdem Danke an niklasbollmer für sein Einwand.
MfG NicoAiko
PS: Wie immer bei Fragen hier schreiben oder direkt an mich wenden.
€dits:
Zeilen besser gemacht
Unnötige Dinge entfernt (z.B. [ u ] usw)
Updated
respawnzeit vergessen!
MfG
/edit/
hier der Pastebin vom Filterscript das ich jz dafür gemacht habe...
http://pastebin.com/bBskxdmT
1. das mit nur einer zeile da kann ich nichts für -.-
2. ok ich pack alles mal rein in eine pwn
//edit
3. hier als pastebin
http://pastebin.com/EB9rn9Hi
format(string,sizeof string,"{FFFFFF}Hello{00FF00}%sWelcome to {FF0000}Grand Theft Awesome{FFFFFF}!",sendername);format(string2,sizeof(string2),"{FFFFFF}Hallo {00FF00}%s{FFFFFF}, Willkommen auf {FF0000}Grand Theft Awesome{FFFFFF}!",sendername);iSendClientMessage(playerid,-1,string,string2);
[color=#333333]
[color=#333333]/edit/
[color=#333333][/pwn] nachgetragen
Deutsch
Englisch Alles 3 sehr gut
Französisch
Japanisch <- Bin fleißig am lernen, kann kanji aber net -.-
if(!strcmp(cmd,"/hitskin",true)){if(IstEinHitman(playerid)){new skinid;params = strtok(cmdtext,var);if(!strlen(params))return SendClientMessage(playerid,grau,"Verwende: /hitskin [SkinID]");skinid = strval(params);SetPlayerSkin(playerid,skinid);return 1;}else return SendClientMessage(playerid,rot,"Du bist kein Hitman.");}
bitte schön
1. falsches forum
2. new vehicleid;
3. Bitte dankeschön
Hallo erstmal,
ich habe das Tutorial Tacho erstellen gemacht aber es erscheint nicht oO
hier der Code
public Tacho(i){ if(IsPlayerConnected(i) && !IsPlayerNPC(i) && IsPlayerInAnyVehicle(i)) { new string[4][128],Float:Entfernung,Float:Geschwindigkeit; new Float:X1[MAX_PLAYERS],Float:X2[MAX_PLAYERS],Float:Y1[MAX_PLAYERS],Float:Y2[MAX_PLAYERS],Float:Z1[MAX_PLAYERS],Float:Z2[MAX_PLAYERS];GetVehiclePos(GetPlayerVehicleID(i),X1[i],Y1[i],Z1[i]);Entfernung = floatsqroot(floatpower(floatabs(floatsub(X1[i],X2[i])),2)+floatpower(floatabs(floatsub(Y1[i], Y2[i])), 2)+floatpower(floatabs(floatsub(Z1[i], Z2[i])), 2));Geschwindigkeit = (Entfernung/(TachoTime/1000)) * 3.6; format(string[0],128,"Km/h: %d",floatround(Geschwindigkeit)); TextDrawSetString(TachoKmh[i],string[0]); GetVehiclePos(GetPlayerVehicleID(i),X2[i],Y2[i],Z2[i]); if(IstEinAuto(GetPlayerVehicleID(i))) { format(string[1],128,"Elektro: %d",Treibstoff[GetPlayerVehicleID(i)]);}if(IstEinMotorrad(GetPlayerVehicleID(i))){ format(string[1],128,"Elektro: %d",Treibstoff[GetPlayerVehicleID(i)]);}if(IstEinBoot(GetPlayerVehicleID(i))){ format(string[1],128,"Benzin: %d",Treibstoff[GetPlayerVehicleID(i)]);}if(IstEinLKW(GetPlayerVehicleID(i))){ format(string[1],128,"Diesel: %d",Treibstoff[GetPlayerVehicleID(i)]);}if(IsAPlane(GetPlayerVehicleID(i))){ format(string[1],128,"Kerosin: %d",Treibstoff[GetPlayerVehicleID(i)]);}new Float:Vhp;GetVehicleHealth(GetPlayerVehicleID(i),Vhp);format(string[2],128,"Zustand: %d",floatround(Vhp));format(string[3],128,"Name: %s",Carname[GetPlayerVehicleID(i)-400]);TextDrawSetString(TachoBenzin[i],string[1]);TextDrawSetString(TachoZustand[i],string[2]);TextDrawSetString(TachoName[i],string[3]);TextDrawShowForPlayer(i,TachoBy[i]);TextDrawShowForPlayer(i,TachoKmh[i]);TextDrawShowForPlayer(i,TachoBenzin[i]);TextDrawShowForPlayer(i,TachoZustand[i]);TextDrawShowForPlayer(i,TachoName[i]);}else{ TextDrawHideForPlayer(i,TachoBy[i]);TextDrawHideForPlayer(i,TachoKmh[i]);TextDrawHideForPlayer(i,TachoBenzin[i]);TextDrawHideForPlayer(i,TachoZustand[i]);TextDrawHideForPlayer(i,TachoName[i]);}return 1;}
if(strcmp(cmd,"/pay",true) == 0){new giveplayerid,amount,name[MAX_PLAYER_NAME],Float:x,Float:y,Float:z;tmp = strtok(cmdtext,var); //var mit dem teil halt ersetzen ^^if(!strlen(tmp))return SendClientMessage(playerid,grau,"Verwende: /pay [playerid] [Menge]");giveplayerid = ReturnUser(tmp);tmp = strtok(cmdtext,var); //var mit dem teil halt ersetzen ^^if(!strlen(tmp))return SendClientMessage(playerid,grau,"Verwende: /pay [playerid] [Menge]");amount = strval(tmp); // da wird halt die zahl aus dem eingegeben rausgenommenif(amount < 1 || amount > 99999) return SendClientMessage(playerid,rot,"Text..."); //Text und amount zahlen anpassenGetPlayerPos(giveplayerid,x,y,z);if(IsPlayerInRangeOfPoint(playerid,10,x,y,z) && GetPlayerMoney(playerid) >= amount) //anpassen!{ GivePlayerMoney(giveplayerid,amount); GivePlayerMoney(playerid,-amount); return 1;}return 1;}
der sollte funktionieren
hoffe konnte helfen
SetVehiclePos(GetPlayerVehicleID(playerid),1153.3712,-921.1945,43.1472,258.4922);
//zuSetVehiclePos(GetPlayerVehicleID(playerid),1153.3712,-921.1945,43.1472);
SetVehicleZAngle(GetPlayerVehicleID(playerid),258.4922);
das gleiche bei SetPlayerPos
das zu
SetPlayerPos(playerid,1153.3712,-921.1945,43.1472);SetPlayerZAngle(playerid,258.4922);
-.-
new botname[25];
schick mal die zeilen wo du das verwendest
if(!strcmp(cmd,"/licht",true)){new status[4];tmp = strtok(cmdtext,var);if(!strlen(tmp))return SendClientMessage(playerid,Farbe,"Nutze: /licht [an/aus]");strmid(status,tmp,0,strlen(tmp),4);if(!strcmp(status,"an",true)){GetVehicleParamsEx(vid,engine,lights,alarm,doors,bonnet,boot,objective);SetVehicleParamsEx(vid,engine,VEHICLE_PARAMS_ON,alarm,doors,bonnet,boot,objective); licht[vid] = true; SendClientMessage(playerid,0xFF0000,"Du hast das Licht angeschaltet!");}else if(!strcmp(status,"aus",true)){GetVehicleParamsEx(vid,engine,lights,alarm,doors,bonnet,boot,objective); SetVehicleParamsEx(vid,engine,VEHICLE_PARAMS_OFF,alarm,doors,bonnet,boot,objective);licht[vid] = false;SendClientMessage(playerid,0xFF0000,"Du hast das Lich ausgeschaltet!");}}return 1;}
so sollte es gehen
also an alle die keinen plan haben:
a_samp & a_npc beißen sich, d.h. du musst die includes öffnen und die npc sachen in die a_samp datei einfügen dann gehen die errors weg!
/edit/ zu dem einen error du musst einfach nur new botname[MAX_PLAYER_NAME]; machen
also erst musst du eine variable erstellen
new geschlecht[10];
dann musst du abfragen was er eingegeben hat und da inputtext ein string mit unbekannter länge ist müssen wir die neue variable nehmen
strmid(geschlecht,inputtext,0,strlen(inputtext),sizeof geschlecht);
strmid(dest[],const source[],start,end,maxlength = sizeof dest);
d.h. in deiner sicht
strmid(neue variable,der eingegebene text,start ist immer bei 0,ende ist stringlength(kurz. strlen) eingegebene text, länge von neue variable);
das letzte kannst du auch durch 10 ersetzen da du 10 zeichen als string eingegeben hast
dann halt noch if(!strcmp(geschlecht,"männlich",true)) usw.
hoffe konnte helfen mfg
/edit/
strcmp sache eingefügt