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?