Nein alles gut so nut noch den Timer setzen eig.
Beiträge von Mogly1
-
-
Ich hätte es so angefangen...
wegen mysql musst schauen mit deiner version davon dann.
hier:
Unter OnpalyerConnect die Textdraws anzeigen lassen ohne das Der Spieler gespawnt wurde und dann die abfrage
public OnPlayerConnect(playerid)
{
//textdraws zeigen...
}danach musst du schauen ob du PalyerTextdraws nutz oder nur textdraws je anch dem halt OnPlayerClickTextDraw oder OnPlayerClickPlayerTextDraw
dann halt wie oben genant anpassen
public OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid)
{
if(playertextid==Textdraw0[playerid])// Also Die Box textdraw dann wo Passwort steht
{
new query[256];
mysql_format(Handle, query, sizeof(query), "SELECT * FROM user WHERE Username='%e'", Spielername(playerid));
mysql_tquery(Handle, query, "UserCheck", "i", playerid);
}
return 1;
}dann bei UserCheck
forward UserCheck(playerid);
public UserCheck(playerid)
{
new num_rows, num_fields;
cache_get_data(num_rows, num_fields, Handle);
SetPlayerVirtualWorld(playerid,1);
if(num_rows == 0)
{
//Register..
ShowPlayerDialog(playerid, DIALOG_Passwort, DIALOG_STYLE_PASSWORD, "Anmeldung", "wähle dein Pw aus...", "Anmelden", "Abbrechen");;
}
else
{
//Login..
ShowPlayerDialog(playerid, DIALOG_Passwort, DIALOG_STYLE_PASSWORD, "Anmeldung", "gib dein Pw an...", "Anmelden", "Abbrechen");
}
}dann bei Dialog_Login
if(dialogid == DIALOG_Passwort)
{
if(!response) return 1;
SetPVarString(playerid,"Pw",inputtext);
//hier dein Textdraw anpassen ist nur nen beispiel
new Text[100];
a=strlen(inputtext);
for(new i=0;i<a;i++)
{
format(Text, sizeof(Text), " %s*",Text);//setzt für jeden buchstaben ein * eig- nicht getestet nur gerade eingefallen
}
TextDrawSetString(Textdraw3[playerid], Text);
}dann noch dies wenn er auf Registiren bzw dann am besten Login drücken will
//wieder anpassen OnPlayerClickPlayerTextDraw evt.
public OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid)
{
if(playertextid==Textdraw1[playerid])// Also Der Button zum login dann
{
new query[256], passworteingabe[128];
GetPVarString(playerid,"Pw",passworteingabe,128);;
mysql_format(Handle, query, sizeof(query), "SELECT * FROM user WHERE Username='%e' AND Passwort=MD5('%e')", Spielername(playerid),passworteingabe);
mysql_tquery(Handle, query, "OnPasswordResponse", "i", playerid);
}
return 1;
}dann dies hier
forward OnPasswordResponse(playerid);
public OnPasswordResponse(playerid)
{
new num_fields, num_rows;
cache_get_data(num_rows, num_fields);
if(num_rows == 0)
{SendClientMessage(palyerid,1,"Falsches Pw");
}
else
{
//Passwort richtig..
SendClientMessage(playerid,gelb, "Erfolgreich eingeloggt.");
//Spieler Laden lassen
}
return 1;
}
nun noch Reg.
//wieder anpassen OnPlayerClickPlayerTextDraw evt.
public OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid)
{
if(playertextid==Textdraw1[playerid])// Also Der Button zum Reg dann
{
new query[256], passworteingabe[128];
GetPVarString(playerid,"Pw",passworteingabe,128);
mysql_format(Handle, query, sizeof(query), "INSERT INTO user (Username, Passwort) VALUES ('%e',MD5('%e'))", Spielername(playerid), passworteingabe);
mysql_function_query(Handle, query, true,"OnPlayerRegister", "i",playerid);
}
return 1;
}
und das ende
forward OnPlayerRegister(playerid);
public OnPlayerRegister(playerid)
{
pInfo[playerid][db_id] = cache_insert_id(Handle);
TogglePlayerSpectating(playerid, 0);
SpawnPlayer(playerid);
SetCameraBehindPlayer(playerid);
return 1;
}
Dies ist wie gesagt nur ne Idee und nicht 100% für dich angepasst bau dir was daraus
-
Na dann so
public OnPlayerStateChange(playerid, newstate, oldstate)
{if(newstate == PLAYER_STATE_DRIVER)
{
if(startbmx[playerid] == GetPlayerVehicleID(playerid))
{
//Motor starten.
}
else
{
//Motor nicht starten
}
}
} -
müsste nicht LIMIT 1" auch noch im log stehen?
evt, eifnach den string mal etwas erhöhen -
Hier falls dir irgend eins helfen sollte
https://www.youtube.com/playli…8ajrY2oORiCwAXylI9qFTQQld
mfg. mogly1 -
Ich finde die Map recht gut, wobei mich persönlich der runde steh Tisch stört. bei den metalldetektoren.
Ansonsten klasse -
sind die warnings in der Zeile?
fuel = vState[vehid][vTank]; -
hey, sorry falls ich blöd bin

aber was genau macht man bei dem Funkspiel ?
Bzw. ist das denn nen spiel...
Ich finde nirgends wo genaue infos wie das spiel geht
-
Könntest du es beim Quellcode machen als beispiel?

okay hier nen beispiel
also bei ahilfe
(das pInfo[playerid][pAdmin] ist bei mir der admin rank musst du in deinem script anpassen dann)
ocmd:ahilfe(playerid,params[])
{
switch(pInfo[playerid][pAdmin] )
{
case 1:
{
new string[125];
format(string,sizeof(string),"%s: /veh | /spawn...",AdminRank(playerid));
SendClientMessage(playerid,-1,string); || oder shwopalyerdialog(palyerid,DIALOG_HELP,DIALOG_STYLE_MSGBOX,"Help",string,"Okayer","");
}
case 2:
{
...
}
case...
}
}dann ränge namen ausgenen wie oben schon genutzt AdminRank(playerid);
stock AdminRank(playerid)
{
new rank[50];
switch(pInfo[playerid][pAdmin] )
{
case 1: rank="Support";
case 2: rank="Admin";
case 3: rank="ServerLeiter";
//case ...
}
return rank;
}
einfach ränge imme rerweitern... -
1. einfach die zahlen weiter nutzen 1,2,3,4,5,6
2. unter /ahelp ne abfrage ob rang ==ist dann sendlcientmessage ausgeben und befehle auflisten
3. Rang name auch wieder per == rang ausgeben ;D -
hier
if(Spieler[georteteid][pHandystate] == 0)
{
Spieler[playerid][pOrtenVehORPlayer] = 1;//1 playerid 2 veh 3 service accept
Spieler[playerid][pOrtenVehIDplayerid] = -1;
KillTimer(SpielerOrtenTimer[playerid]);
DisablePlayerCheckpoint(playerid);
return SCM(playerid,SAMP_WEISS,""IINFO2"Ortungssystem:"#HTML_WEISS" das Signal ist verloren gegangen!");
}
[/list]ist das handy von deinem gesuchten spieler aus?
-
ist das Handy aus
-
eigentlich sollten anch 6 sekunden die neue Position angezeigt werdne was genau passiert denn kansnt evt. video amchen oder steht was im chat?
-
zige bitte mal deisen public SpielerOderFahrzeugOrten
-
du ahst zu vile 0 da drinne probiers mal so
CreateDynamic3DTextLabel("[ "IINFO2"Stadthalle San Fierro"#HTML_WEISS" Um das Menu zu öffnen verwende\n"HTML_WEISS"Tase: N",SAMP_WEISS,361.8299,173.7191,1008.3828,10,INVALID_PLAYER_ID,INVALID_VEHICLE_ID,1,0,3);
-
kannst ud bitte mal den ganzen public zeigen
aber ansonsten musst du das so anpassen glaube..if(Spieler[playerid][pIsearch] == 1)
{
new Float:x,Float:y,Float:z;
if(Spieler[playerid][pOrtenVehORPlayer] == 1)//ortet player
{
GetPlayerPos(Spieler[playerid][pOrtenVehIDplayerid],x,y,z);
DisablePlayerCheckpoint(playerid);
SetPlayerCheckpoint(playerid,x,y,z,3);
SpielerOrtenTimer[playerid]=SetTimerEx("SpielerOderFahrzeugOrten",1000,1,"iii",playerid,Spieler[playerid][pOrtenVehIDplayerid],1);
return 1;
}
if(Spieler[playerid][pOrtenVehORPlayer] == 2)//ortet fahrzeug
{
GetVehiclePos(Spieler[playerid][pOrtenVehIDplayerid],x,y,z);
DisablePlayerCheckpoint(playerid);
SetPlayerCheckpoint(playerid,x,y,z,3);
SpielerOrtenTimer[playerid]=SetTimerEx("SpielerOderFahrzeugOrten",1000,1,"iii",playerid,Spieler[playerid][pOrtenVehIDplayerid],2);
return 1;
}
}
if(Spieler[playerid][pWaitEating] == 1)
{
DisablePlayerCheckpoint(playerid);
SCM(playerid,SAMP_WEISS,""IINFO" warte einen Moment! Dein Essen wird zubereitet.");
TogglePlayerControllable(playerid,0);
SetTimerEx("DriveIn",5000,0,"i",playerid);
} -
ist nicht das schon nen Timer?
SpielerOderFahrzeugOrten
zeig mal den public -
änder das mal
if(GetPlayerHealth(playerid, health) < 6.0)zu dem
if(health < 6.0)
-
Das
if(sscanf(params,"i",nummer))return SCM(playerid,SAMP_WEISS,""IINFO" /orten [Handynummer]");
zu dem
if(sscanf(params,"u",pID))return SCM(playerid,SAMP_WEISS,""IINFO" /orten [playerid]");und die Zeile raus
pID = IsHandyNummerEnable(nummer);
und wenn du möchtest das der Checkpoint immer wieder neu gesetzt wird arbeite am besten mit einem Timer -
Ich würde ein Abschlepp system feiern wo das Fahrzeug auf dem Hemit Transporter geladen wird und dann an einem Punkt abgestellt wird (abgeschleppt wird)