ja das hab ich jetzt dazu gepackt aber dein simples system funktioniert bei mir komischerweise nicht
ehhm nimm mich mal per skype an dann kannste per tv mal mein script sehen und wir können das gemeinsam lösen (wenns recht ist)
Beiträge von Silbermond
-
-
also GetPlayerName(deineid,speichervariable,sizeof(indergrössevon));
edit
geändert -
ich habe keine ahnung ob das annähernd richtig ist ich habe es nochmal komplett abgeändert
public UserCheck(playerid)
{
print("3");
new num_rows,num_fields;
cache_get_data(num_rows,num_fields,dbhandle);
new betaregstatus;
if(num_rows==0)
{ //Registrierung
if(register_status == 1)
{
new string[255];
if(!strfind(SpielerName(playerid),gBadName,true))
{
SendClientMessage(playerid,CL_HGRÜN,"Du wurdest gekickt weil du einen nicht erlaubten Namen hast. Oder du hast nicht erlaubte Zeichen im Namen.");
format(string, sizeof(string), "ADMCMD: %s wurde vom Server gekickt. Grund: Unerlaubter Name", SpielerName(playerid)); //macht einen String, %s ist der Name anderes Bsp. %d ist eine Zahl^^
SendClientMessageToAll(CL_KNALLROT,string);
KickPlayer(playerid);
return 0;
}
if(betastatus == 1 && betaregstatus == 0)
{
#define DIALOG_BETA_KEY_INSERT 20
//betakey abfrage
print("beta key abfrage");
betaregstatus = 1;
new inputtext[128];
printf("betaregstatus %i",betaregstatus);
ShowPlayerDialog(playerid,DIALOG_BETA_KEY_INSERT,DIALOG_STYLE_INPUT,inputtext,"Gebe den Beta Key ein","OK","Cancel");
//registrierung
return 1;
}
print("user check -> registrierung ip checken ohne dialog zeigen register");
new ip[16],query[128]; //hier stimmt die reihenfolge nicht!!!
GetPlayerIp(playerid,ip,sizeof(ip));
format(query,sizeof(query),"SELECT NAME FROM benutzer WHERE IP='%s'",ip);
mysql_function_query(dbhandle,query,true,"IPCHECK","d",playerid);
print("user check abgeschlossen");
//ShowPlayerDialog(playerid,DIALOG_REGISTER_MYSQL,DIALOG_STYLE_INPUT,"Registrierung auf MVS [BETA]","Bitte Registriere dich mit deinem Passwort.","Register","Close");
//Dein Register Zeugs
}
else if(register_status == 0)
{
SendClientMessage(playerid,-1,"Die Registrierung ist abgeschaltet");
KickPlayer(playerid);
}
}
else
{}
//Login
}
habe dir eine anfrage gesendet @ciberkiller -
GetPlayerName(pID,SpielerTimeBan[pID][pNameTBan],sizeof(SpielerTimeBan[pID][pNameTBan]));//Alle errors sind hier?
muss doch so sein?!
GetPlayerName(deinespielerid,sizeof(SpielerTimeBan[pID][pNameTBan]),SpielerTimeBan[pID][pNameTBan]);schau mal ob es so geht
-
forward BetakeyCheck(key); public BetakeyCheck(key) { new num_rows,num_fields; cache_get_data(num_rows,num_fields,dbhandle); if(num_rows == 0) { return 1 } return 1; }
hab ich doch wenn == 0 dann soll der Key vom User abgefragt werden mit einem DIalog (den kann ich selber) und dann verglichen werden (hab ich noch nie gemacht) -
Hallo zusammen,
ich habe vor für den nächsten Changelog ein schönes Beta Key System rein zu machen damit wenn der Server online geht die Leute nur sich mit Beta Key Registrieren können
hier mal der Anfang aber ich weiss einfach nicht weiter , eigentlich nur den Eingegebenen Key mit den Datenbank Keys überprüfen und dann den status auf 0(deaktiviert) setzen und alle die 1 sind (aktiviert) können noch benutzt werden.
hier mal der CODEforward BetakeyCheck(key);
public BetakeyCheck(key)
{
new num_rows,num_fields;
cache_get_data(num_rows,num_fields,dbhandle);
if(num_rows == 0)
{
return 1
}
return 1;
}
public UserCheck(playerid)
{
print("3");
new num_rows,num_fields;
cache_get_data(num_rows,num_fields,dbhandle);
new betaregstatus;
if(num_rows==0)
{ //Registrierung
if(register_status == 1)
{
new string[255];
if(!strfind(SpielerName(playerid),gBadName,true))
{
SendClientMessage(playerid,CL_HGRÜN,"Du wurdest gekickt weil du einen nicht erlaubten Namen hast. Oder du hast nicht erlaubte Zeichen im Namen.");
format(string, sizeof(string), "ADMCMD: %s wurde vom Server gekickt. Grund: Unerlaubter Name", SpielerName(playerid)); //macht einen String, %s ist der Name anderes Bsp. %d ist eine Zahl^^
SendClientMessageToAll(CL_KNALLROT,string);
KickPlayer(playerid);
return 0;
}
if(betastatus == 1 && betaregstatus == 0)
{
//betakey abfrage
print("beta key abfrage");
betaregstatus = 1;
printf("betaregstatus %i",betaregstatus);
new query[128];
format(query,sizeof(query),"SELECT key FROM betakey WHERE status='1'");
mysql_function_query(dbhandle,query,true,"BetakeyCheck","d",playerid);
//registrierung
return 1;
}
print("user check -> registrierung ip checken ohne dialog zeigen register");
new ip[16],query[128]; //hier stimmt die reihenfolge nicht!!!
GetPlayerIp(playerid,ip,sizeof(ip));
format(query,sizeof(query),"SELECT NAME FROM benutzer WHERE IP='%s'",ip);
mysql_function_query(dbhandle,query,true,"IPCHECK","d",playerid);
print("user check abgeschlossen");
//ShowPlayerDialog(playerid,DIALOG_REGISTER_MYSQL,DIALOG_STYLE_INPUT,"Registrierung auf MVS [BETA]","Bitte Registriere dich mit deinem Passwort.","Register","Close");
//Dein Register Zeugs
}
else if(register_status == 0)
{
SendClientMessage(playerid,-1,"Die Registrierung ist abgeschaltet");
KickPlayer(playerid);
}
}
else
{//Login
ShowPlayerDialog(playerid,DIALOG_LOGIN_MYSQL,DIALOG_STYLE_PASSWORD,"Login auf MVS [BETA] ","Bitte Logge dich mit deinem Passwort ein. ","Login","Close");
}
return 1;
}public OnPlayerConnect(playerid)
{
if(IsPlayerNPC(playerid)) return 1;
SetPlayerColor(playerid,CL_GRAU);
TogglePlayerControllable(playerid,0);
print("0.0");
introstart(playerid);
//Register-System-MYSQL
new name[MAX_PLAYER_NAME],query[128];
GetPlayerName(playerid,name,sizeof(name));
format(query,sizeof(query),"SELECT DB_ID FROM benutzer WHERE NAME='%s'",name);
mysql_function_query(dbhandle,query,true,"UserCheck","i",playerid);
TextDrawShowForPlayer(playerid, Date);
return 1;
}
forward IPCHECK(playerid);
public IPCHECK(playerid)
{
if(cache_get_row_count() > 0)
{
print("doppelte ip");
new ip[16], query[128];
GetPlayerIp(playerid,ip,sizeof(ip));
//IP existiert dann kontrolle in der whitelist
format(query,sizeof(query),"SELECT NAME FROM whitelist WHERE IP='%s'",ip);
mysql_function_query(dbhandle,query,true,"WHITELISTCHECK","d",playerid);
print("Whitelist checken ergebnis abwarten");
return 1;
}
print("keine doppelte ip");
SCM(playerid,-1,"alles gut keine doppelte registrierung");
ShowPlayerDialog(playerid,DIALOG_REGISTER_MYSQL,DIALOG_STYLE_INPUT,"Registrierung auf MVS [BETA]","Bitte Registriere dich mit deinem Passwort.","Register","Close");
return 1;
}
forward WHITELISTCHECK(playerid);
public WHITELISTCHECK(playerid)
{
if(cache_get_row_count() < 1)
{
print("kein whitelist eintrag");
SCM(playerid,-1,"Du hast dich bereits mit dieser IP-Adresse Registriert.");
SCM(playerid,-1," Bei einem Multiaccount z.B. für Geschwister melde dich bitte bei Admins mit deiner IP.");
return KickPlayer(playerid);
}
print("2");
ShowPlayerDialog(playerid,DIALOG_REGISTER_MYSQL,DIALOG_STYLE_INPUT,"Registrierung auf MVS [BETA]","Bitte Registriere dich mit deinem Passwort.","Register","Close");
SCM(playerid,-1,"whitelist eintrag vorhanden registrierung fortsetzen");
print("WHITELIST check abgeschlossen");
return 1;
}Vlt kann ja jemand helfen
Vielen dank im Vorraus
-
Silbermond: evtl mit ner alten Include kompiliert?
nein, habe die in alle Includes ordner eingefügt (alte war keine vorhanden) -
Tja aktivierung klappt wohl nicht einwandfrei
Ergebnis der Anfrage: <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</he -
heißt mein Createobject sieht dann ungefähr so aus
CreateObject(zInfo[playerid][o_id],zInfo[playerid][o_x],zInfo[playerid][o_y],zInfo[playerid][o_z],zInfo[playerid][o_r]);
ich komm mit dem Tutorial nicht klar
-
heißt ich mache dann für jede schranke nen neues enum oder wie?
-
Hallo zusammen
ich brauche mal Hilfe bzw ein Beispiel
ich möchte jetzt beispielsweise alle meine Tore der Fraktion X in der DB speichern laden und halt speichern (+ erstelen)
Wie muss ich das machen
kann mir da jmd ein Beispiel für geben?
MFG
-
Dann zeig doch mal wie du die Schranken aus der Datenbank lädst.
heißt ich muss die Schranken laden?moment dann bau ich das eben mal ein
-
ich wollte die position der zollstation ja mit der der schranken überprüfen und dann mit der ID verbinden die in der DB steht
also so
ID ZOLL X Y Z = INRANGE X von SCHRANKE 1 XYZ oder SCHRANKE 2 XYZ
preis = X
nur dafür muss ich ja die IDS zuordnen der schranken
...
-
danke funktioniert
wie immer bekommst du ja von mir den Daumen
Danke
-
nein nein nicht fest sondern variable
hab mich da wahrscheinlich nicht so ausgedrückt wie ichs haben wollteDer Besitzer soll ja wie z.B. bei der Miete den Preis vorgeben
-
okay ich mache es wieder so wie vorher
[expander]stock GetPlayerAdminName(playerid)
{
new aName[]="Stellv. Projektleiter";
switch(sInfo[playerid][alevel])
{
case 0: aName="User";
case 1: aName="V.I.P";
//fehlt aus sicherheit vor diebstahldefault: aName="ERROR";
}
return aName;
}[/expander]rückänderung
folgender ERROR
E:\SAMP\gamemodes\Script1.pwn(568) : error 047: array sizes do not match, or destination array is too small
-
zInfo[z_rang] = GetPlayerAdminName(i);
den habe ich jetzt ebenfalls zu
GetPlayerAdminName(i,zInfo[i][z_rang],32);
so gemacht und auch im enum die zahl
folgende Warnings 2 mal
E:\SAMP\gamemodes\Script1.pwn(568) : warning 202: number of arguments does not match definition -
Hallo comm
ich wollte gerne den SpielerNamen und den AdminRang in einem Enum speichernbeim definieren kommt dann das
E:\SAMP\gamemodes\Script1.pwn(568) : warning 202: number of arguments does not match definition
E:\SAMP\gamemodes\Script1.pwn(568) : warning 202: number of arguments does not match definitionSpoiler anzeigen zInfo[i][z_name] = GetPlayerName(i);und dieser Error bei dieser zeile
E:\SAMP\gamemodes\Script1.pwn(567) : error 006: must be assigned to an array
Spoiler anzeigen zInfo[i][z_rang] = GetPlayerAdminName(i);MFG
-
Nicht grad Seriöse Anfrage.
Warum sollten wir uns für dich entscheiden und nicht für andere, professionellere Sponsoren?
Wir wissen nichts über dich.
Wir wissen nichts über deinen Root Server.
Wir wissen so gut wie nichts.
da kann ich nur zustimmen.
Ich überarbeite sie nochmal
sieht danach auch nicht viel besser aus -
Hallo zusammen.
Wie im Thema INSERT INTO klappt nicht angefangen,
brauche ich da noch 1 mal Hilfe
da das da ja nicht reingehört schreibe ich da jetzt mal einen neuen Beitrag
also wie die Überschrift schon sagt brauche ich eine Abfrage ob
Zollstation(Koordinaten) mit der dementsprechenden ID == Schranke 1 oder 2
ich habe das ganze erstmal basieren lassen auf dem Haussystem von MR Monat.
aus Createhaus wurde dann Createzoll und mit setpreis wurde setzollpreis
nun brauche ich halt diese Abfrage um zu gucken. Welche Zollstation ist das. und zu jeder Zollstation muss ich dann die 2 Schranken zuordnen können.
Hier habt ihr mal mein /buyzollticket befehl mit DIALOG
ocmd:buyzollticket(playerid,params[])
{
new string[128];
/*
ZLV1L/auf CreateObject(968, 1648.6, -42.1, 36.4, 0, 0, 31.5);
ZLV1L/zu CreateObject(968, 1648.5996, -42.09961, 36.4, 0, 268.25, 22.998);
*/
if(IsPlayerInRangeOfPoint(playerid,5,1648.6, -42.1, 36.4)) //Links in Fahrtrichtung nach LV
{
format(string,sizeof(string),"Möchtest du ein Zollticket im Preis von %i Euro kaufen?",zInfo[playerid][z_preis]);
ShowPlayerDialog(playerid,DIALOG_ZOLL_LS_LV,DIALOG_STYLE_MSGBOX,"Zoll - Ticket",string,"Ja","Nein, Abbruch");
}
else if(IsPlayerInRangeOfPoint(playerid,5,1656.6, -35.6, 36.5)) //Rechts in Fahrtrichtung nach LS
{
format(string,sizeof(string),"Möchtest du ein Zollticket im Preis von %i Euro kaufen?",zInfo[playerid][z_preis]);
ShowPlayerDialog(playerid,DIALOG_ZOLL_LV_LS,DIALOG_STYLE_MSGBOX,"Zoll - Ticket",string,"Ja","Nein, Abbruch");
}
}und hier die dialoge die meine schranken dann bewegen
Spoiler anzeigen //ZollSystem
//LV
if(dialogid == DIALOG_ZOLL_LS_LV)
{
if(response)
{
//Zollticketprozess (kaufen)
if(GetPlayerMoney(playerid)<zInfo[playerid][z_preis])
{
SendClientMessage(playerid,RED,"Du hast nicht genügend Geld um dir ein Zollticket zu kaufen");
return 1;
}
GivePlayerMoney(playerid,-zInfo[playerid][z_preis]);
//Schranke Bewegen
/*
ZLV1L/auf CreateObject(968, 1648.6, -42.1, 36.4, 0, 0, 31.5);
ZLV1L/zu CreateObject(968, 1648.5996, -42.09961, 36.4, 0, 268.25, 22.998);
*/
MoveObject(ZLV1L,1648.6, -42.1, 36.4,3);
SetObjectRot(ZLV1L,0, 0, 31.5);
SetTimerEx("ZLVL1",7000,false,"i",playerid);
SendClientMessage(playerid,CLGREEN,"Du hast dir erfolgreich ein Zollticket gekauft! Gute Fahrt!");
SendClientMessage(playerid,CL_ORANGE,"Du kannst nun weiterfahren");
return 1;
}
else
{
SendClientMessage(playerid,RED,"Du hast den Kauf des Zolltickets abgebrochen");
return 1;
}
}
if(dialogid == DIALOG_ZOLL_LV_LS)
{
if(response)
{
//Zollticketprozess (kaufen)
if(GetPlayerMoney(playerid)<zInfo[playerid][z_preis])
{
SendClientMessage(playerid,RED,"Du hast nicht genügend Geld um dir ein Zollticket zu kaufen");
return 1;
}
GivePlayerMoney(playerid,-zInfo[playerid][z_preis]);
//Schranke Bewegen
//ZLV1R/auf CreateObject(968, 1656.6, -35.6, 36.5, 0, 2.748, 23.744);
//ZLV1R/zu CreateObject(968, 1656.6, -35.5, 36.5, 0, 267.747, 26.491);
MoveObject(ZLV1R,1648.6, -42.1, 36.4,3);
SetObjectRot(ZLV1R,0, 0, 31.5);
SetTimerEx("ZLVR1",7000,false,"i",playerid);
SendClientMessage(playerid,CLGREEN,"Du hast dir erfolgreich ein Zollticket gekauft! Gute Fahrt!");
SendClientMessage(playerid,CL_ORANGE,"Du kannst nun weiterfahren");
return 1;
}
else
{
SendClientMessage(playerid,RED,"Du hast den Kauf des Zolltickets abgebrochen");
return 1;
}
}
und die entsprechenden Timer die die Schranke schließen
Spoiler anzeigen forward ZLVL1(playerid);
public ZLVL1(playerid)
{
MoveObject(ZLV1L,1648.5996, -42.09961, 36.4,10);
SetObjectRot(ZLV1L,0, 268.25, 22.998);
SendClientMessage(playerid,-1,"Die Schranke wird geschlossen");
return 1;
}Spoiler anzeigen //1656.6, -35.5, 36.5, 0, 267.747, 26.491Spoiler anzeigen forward ZLVR1(playerid);
public ZLVR1(playerid)
{
MoveObject(ZLV1R,1656.6, -35.5, 36.5,10);
SetObjectRot(ZLV1R, 0, 267.747, 26.491);
SendClientMessage(playerid,-1,"Die Schranke wird geschlossen");
return 1;
}Anmerkung
Spoiler anzeigen DIALOG_ZOLL_LV_LS sagt aus dass die schranke von LV nach LS gemeint ist.
Beim anderen Dialog umgekehrt also LS nach LVVIelen dank wenn mir jmd die abfrage sagen kann
MFG