So, da bin ich wieder, ich wollte mal Fragen ob es möglich ist, den Befehl /drink Beer o. Wein zu machen, da ich sonst alles mit Zahlen mache.
Arbeite mit OCMD und sscanf.
mfg
So, da bin ich wieder, ich wollte mal Fragen ob es möglich ist, den Befehl /drink Beer o. Wein zu machen, da ich sonst alles mit Zahlen mache.
Arbeite mit OCMD und sscanf.
mfg
Tag Community,
hab ne Frage, kann mir jemand mal so ne Art Tutorial machen /Link schicken, wie man die 0.3x Textdraws nutzt und was das alles bedeutet?
Möchte z.b eine Textdraw mit 5Skins erstellen.
PS: Ich versteh nicht so viel von Textdraws
mfg
Tag Community,
ich habe mir nen Haussystem erstellt,und möchte gerne, dass man per Dialog an mehreren Häusern Spawnen kann.
Die Datei heißt "haus_daten.cfg", aber man spawnt immer an dem ersten Haus, das man sich gekauft hat, also in der Datei, das erste mal wenn mein Name auftaucht.
Meine aktuelle Abfrage lautet:
for(new i = 0;i<_cache_haus;i++)
{
if(!strcmp(HausDaten[i][Besitzer],SpielerName(playerid)))
{
ShowPlayerDialog(playerid,DIALOG_SpawnHaus,DIALOG_STYLE_LIST,"Spawn Orte","Noobspawn\n1.Wohnort","Spawn","Abbrechen");
break;
}
else
{
ShowPlayerDialog(playerid,DIALOG_SpawnHaus,DIALOG_STYLE_LIST,"Spawn Orte","Noobspawn","Spawn","Abbrechen");
}
}
Die Häuser werden so in der haus_daten.cfg gespeichert:
firestormZ,692.887145,-1602.772705,15.046875,178.582092,2365.245605,-1135.240112,1050.875000,359.984802,2372.128417,-1125.048339,1050.875000,171.066497,8,3214,40000,1,0,
ich möchte dann z.B. das wenn ich zwei Häuser besitze, der erste Eintrag mit meinem Namen übersprungen wird, und dann der Zweite Eintrag mit meinem Namen ausgeführt wird.
mfg
/edit: push
/edit2: push
du kannst die zeile 302 eigentlich löschen, da jedes neu erstellte SetPVarInt /dini_IntSet ... sowieso auf 0 gesetzt wird
stock Register(playerid,key[])
{
new Playerdatei[128];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(Playerdatei,sizeof(Playerdatei),"/Accounts/%s.ini",name);
dini_Create(Playerdatei); // Zeile 300
dini_Set(Playerdatei,"Passwort",key);
dini_IntSet(Playerdatei,"Admin",0); // Zeile 302
SetPlayerScore(playerid,0);
SetPVarInt(playerid,"Eingeloggt",1);
return 1;
}
stock Login(playerid,key[])
{
new Playerdatei[128];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(Playerdatei,sizeof(Playerdatei),"/Accounts/%s.ini");
if(!strcmp(key,dini_Get(Playerdatei,"Passwort"),false))
{
AccountLaden(playerid);
}
else
{
SendClientMessage(playerid,Gruen,"Du hast ein falsches Passwort eingegeben!");
ShowPlayerDialog(playerid,1,DIALOG_STYLE_PASSWORD,"Login","Dein Account wurde gefunden.\n Bitte gib jetzt dein Passwort ein.","Abbrechen","Abbrechen");
}
}
stock AccountLaden(playerid)
{
new Playerdatei[128];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(Playerdatei,sizeof(Playerdatei),"/Accounts/%s.ini",name);
Spieler[playerid][Level] = dini_Int(Playerdatei,"Level");
Spieler[playerid][Admin] = dini_Int(Playerdatei,"Admin");
SetPVarInt(playerid,"Eingeloggt",1);
return 1;
}
stock SpielerSpeichern(playerid)
{
if(GetPVarInt(playerid,"Eingeloggt")== 1)
{
new Playerdatei[128];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(Playerdatei,sizeof(Playerdatei),"/Accounts/%s.ini",name);
dini_IntSet(Playerdatei,"Level", Spieler[playerid][Level]);
dini_IntSet(Playerdatei,"Admin", Spieler[playerid][Admin]); // Zeile 342
}
return 1;
}
Bei SpielerSpeichern immer mit dini_IntSet arbeiten,
bei AccontLaden mit dini_Int
und welche Zeile ist was? also welche Zeile 302, 304 und 342?
Du hast lediglich Kommas vergessen etc, übernehm das mal alles, dann müsste es richtig sein...
stock Register(playerid,key[])
{
new Playerdatei[128];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(Playerdatei,sizeof(Playerdatei),"/Accounts/%s.ini",name);
dini_Create(Playerdatei); // Zeile 300
dini_Set(Playerdatei,"Passwort",key);
dini_Set(Playerdatei,"Admin",0); // Zeile 302
SetPlayerScore(playerid,0);
SetPVarInt(playerid,"Eingeloggt",1);
return 1;
}
stock Login(playerid,key[])
{
new Playerdatei[128];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(Playerdatei,sizeof(Playerdatei),"/Accounts/%s.ini");
if(!strcmp(key,dini_Get(Playerdatei,"Passwort"),false))
{
AccountLaden(playerid);
}
else
{
SendClientMessage(playerid,Gruen,"Du hast ein falsches Passwort eingegeben!");
ShowPlayerDialog(playerid,1,DIALOG_STYLE_PASSWORD,"Login","Dein Account wurde gefunden.\n Bitte gib jetzt dein Passwort ein.","Abbrechen","Abbrechen");
}
}
stock AccountLaden(playerid)
{
new Playerdatei[128];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(Playerdatei,sizeof(Playerdatei),"/Accounts/%s.ini",name);
Spieler[playerid][Level] = dini_Int(Playerdatei,"Level");
Spieler[playerid][Admin] = dini_Int(Playerdatei,"Admin");
SetPVarInt(playerid,"Eingeloggt",1);
return 1;
}
stock SpielerSpeichern(playerid)
{
if(GetPVarInt(playerid,"Eingeloggt")== 1)
{
new Playerdatei[128];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(Playerdatei,sizeof(Playerdatei),"/Accounts/%s.ini",name);
dini_Int(Playerdatei,"Level", Spieler[playerid][Level]);
dini_Int(Playerdatei,"Admin", Spieler[playerid][Admin]); // Zeile 342
}
return 1;
}
dann poste mal die Zeilen 300-345
gib mal deine TeamViewer Daten privat, ich mach dir das
änder das dini_Create(Playerdatei); auch in dini_Create(Spielerdatei);
der Rest sind nur Rechtschreibfehler
//edit: wenn du nicht weiterkommst, kann ich dir gerne über TeamViewer helfen
nochmals, guck mal, du hast oben new Spielerdatei[128]; definiert, und verwendest unten Playerdatei, also änder das Playerdatei in Spielerdatei
okay, du hast
ShowPlayerDialog(playerid,2,DIALOG_STYLE_PASSWORD,"Alpha Status\n Registrier dich auf GTA-Server.de\n Bitte gib jetzt dein gewünschtes Passwort ein.","Abbrechen","Abbrechen");
gemacht, und anstatt die Zahl (rot makiert) gib lieber den vollständigen Dialog an, also DIALOG_REGISTER,
dann sind wir schonmal bei:
ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_PASSWORD,"Alpha Status\n Registrier dich auf GTA-Server.de\n Bitte gib jetzt dein gewünschtes Passwort ein.","Abbrechen","Abbrechen");
Dann hast du keine Überschrift also nur den Text "Alpha Status\n Registrier dich auf GTA-Server.de\n Bitte gib jetzt dein gewünschtes Passwort ein.":
ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_PASSWORD,"Alpha Status\n Registrier dich auf GTA-Server.de\n Bitte gib jetzt dein gewünschtes Passwort ein.","Abbrechen","Abbrechen");
das musst du ändern, bzw. eine Überschrift "erfinden":
ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_PASSWORD,"Alpha Status","Registrier dich auf GTA-Server.de\n Bitte gib jetzt dein gewünschtes Passwort ein.","Abbrechen","Abbrechen");
Die Lösung ist:
ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_PASSWORD,"Alpha Status","Registrier dich auf GTA-Server.de\n Bitte gib jetzt dein gewünschtes Passwort ein.","Abbrechen","Abbrechen");
zeig mir mal deine definierten Dialoge oben im Script,
also "#define DIALOG_...."
Doch, die "2", die ersetzt du um nen besseren Überblick zu erhalten durch dein "DIALOG_...." das du oben im Script definiert hast, und dort sind noch ein paar Fehler, ich zeig dir jetzt mal die Lösung:
ShowPlayerDialog(playerid,DIALOG_LOGIN/*Hast du oben im Script definiert*/,DIALOG_STYLE_PASSWORD,"Alpha Status"/*Die Überschrift des Dialoges*/,"Registrier dich auf GTA-Server.de\n Bitte gib jetzt dein gewünschtes Passwort ein.","Abbrechen","Abbrechen");
Guck dir das mal an, dann verstehst du es auch --> ShowPLayerDialog
Struktur:
ShowPlayerDialog(playerid,Dein Dialog,Dialog Art,"Überschrift des Dialoges","Text des Dialoges","Kopf1","Knopf2");
Du hast oben in deinem Script
#define DIALOG_....
eingespeichert, du muss aber nicht die DialogID dort eintragen, also die 2, sonder dein DIALOG_....
stock Register(playerid,key[])
{
new Spielerdatei[128]; //hier hast du Spielerdatei definiert,
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(Playerdatei,sizeof(Playerdatei),"/Accounts/%s.ini",name); //und hier hast du Playerdatei angegeben, also Playerdatei in Spielerdatei ändern
dini_Create(Playerdatei);
dini_Set(Playerdatei,"Passwort",key);
dini_Set(Playerdatei,"Admin",0);
SetPlayerScore(playerid,0);
SetPVarInt(playerid,0);
return 1;
}
if(!strlen(inputtext))
{
SendClientMessage(playerid,Rot,"Dein Passwort war nicht lang genug.");
ShowPlayerDialog(playerid,2,DIALOG_STYLE_PASSWORD,"Alpha Status\n Registrier dich auf GTA-Server.de\n Bitte gib jetzt dein gewünschtes Passwort ein.","Abbrechen","Abbrechen"); //vor "DIALOG_STYLE_PASSWORD" musst du, "DIALOG_LOGIN" setzen, also anstatt die 2 "DIALOG_LOGIN"
return 1;
}
else
{
Register(playerid,inputtext);
return 1;
HausDaten[_cache_haus][pickida]
so ist der vollstädige code, aber wie mach ich das dann mit isplayerinrangeofpoint und so?
Tag Community, habe vor diesen /enter befehl unter OnPlayerPickUpPickUp zu hauen, könnt ihr mir da helfen?
new idx1, cmd1[256];
cmd1 = strtok1(cmdtext,idx1);
if(!strcmp(cmd1,"/enter",true))
{
for(new i = 0;i<_cache_haus;i++)
{
if(HausDaten[i][interior] == 0)continue;
if(!IsPlayerInRangeOfPoint(playerid,1.5,HausDaten[i][ax],HausDaten[i][ay],HausDaten[i][az]))continue;
if(HausDaten[i][verschlossen]){SendClientMessage(playerid,ROT,"Dieses Haus ist verschlossen!");break;}
SetPlayerInterior(playerid,HausDaten[i][interior]);
SetPlayerFacingAngle(playerid,HausDaten[i][iang]);
SetCameraBehindPlayer(playerid);
SetPlayerVirtualWorld(playerid,HausDaten[i][virtual_world]);
SetPlayerPos(playerid,HausDaten[i][ix],HausDaten[i][iy],HausDaten[i][iz]);
}
return 1;
}
Hab dir vorhin schonmal gesagt, könnte dir das eben über TeamViewer machen, ich denke ich weiß jetzt was das Problem ist
McMoney: Jap, ist richtig
//EDIT: hab mal per teamviewer drüber geschaut, das mit giveplayermoney etc, kann er nicht nutzen, da er sonst von seinem anticheatsystem gebannt wird
John_Sanclear
SpielerSpeichern: dini_IntSet(Spielerdatei,"Geld",GetPlayerMoney(playerid));
SpielerLaden: GivePlayerMoney(playerid,dini_Int(Spielerdatei,"Geld"));
@Barnabas Collins:
Er soll das PayPlayerMoney-Callback einfach raushauen und mit GivePLayerMoney arbeiten?