Benutzt du einen Streamer? Wenn nein, dann hast du wohl das Limit überschritten, und solltest eine Streamer benutzen.
Beiträge von Jeffry
-
-
Kannst du bitte von nun an davon absehen, den gesamten Post (mit Code!) zu zitieren? Dafür wäre ich, und sicher auch viele andere, dir sehr dankbar.

So, zurück zum Thema:
Das
for(new i=0; i<MAX_PLAYERS; i++)
ist eine Schleife von 0 bis MAX_PLAYERS-1, wobei MAX_PLAYERS in der Include a_samp definiert ist (z.B. 500).
i nimmt dabei bei jedem Durchlauf den nächsten Wert (++ = +1) an, also konkret 0,1,2,3,4,...498,499.Mehr dazu:
http://wiki.sa-mp.com/wiki/Loops -
OnGameModeInit:
SetTimer("PoliceNPCCheck", 500, 1);Unten im Code:
forward PoliceNPCCheck();
public PoliceNPCCheck()
{
new spName[MAX_PLAYER_NAME], Float:x, Float:y, Float:z;
for(new i=0; i<MAX_PLAYERS; i++)
{
GetPlayerName(i, spName, MAX_PLAYER_NAME);
if(IsPlayerNPC(i) && !strcmp(spName, "NAME_DES_POLIZISTEN_HIER"))
{
GetPlayerPos(i, x, y, z);
for(new j=0; j<MAX_PLAYERS; j++)
{
if(IsPlayerConnected(j) && j != i && IsPlayerInRangeOfPoint(j, 8.0, x, y, z))
{
SetPlayerChatBubble(i,"Guten Tag Sir.", WEISS, 100.0, 10000);
return 1;
}
}
return 1;
}
}
return 1;
}NAME_DES_POLIZISTEN_HIER logischerweise mit dem Spieler-Name des NPCs ersetzen.
-
Dazu war ja der Link gedacht, aber gut...
ocmd:carlock(playerid)
{
new engine, lights, alarm, doors, bonnet, boot, objective;
GetVehicleParamsEx(GetPlayerVehicleID(playerid),engine,lights,alarm,doors,bonnet,boot,objective);
switch(doors)
{
case 0:
{
SetVehicleParamsEx(GetPlayerVehicleID(playerid),engine,lights,alarm,1,bonnet,boot,objective);
new string[144];
format(string, sizeof(string), " Du hast soeben dein Fahrzeug (%s) {E10000}abgeschlossen", GetVehicleFriendlyName(GetPlayerVehicleID(playerid)));
SendClientMessage(playerid,weiß, string);
}
case 1:
{
SetVehicleParamsEx(GetPlayerVehicleID(playerid),engine,lights,alarm,0,bonnet,boot,objective);
new string[144];
format(string, sizeof(string), " Du hast soeben dein Fahrzeug (%s) {00FF00}aufgeschlossen", GetVehicleFriendlyName(GetPlayerVehicleID(playerid)));
SendClientMessage(playerid,weiß, string);
}
}
return 1;
}GetVehicleFriendlyName: http://forum.sa-mp.com/showthread.php?t=106731
-
ocmd:carlock(playerid)
{
new engine, lights, alarm, doors, bonnet, boot, objective;
GetVehicleParamsEx(GetPlayerVehicleID(playerid),engine,lights,alarm,doors,bonnet,boot,objective);
switch(doors)
{
case 0:
{
SetVehicleParamsEx(GetPlayerVehicleID(playerid),engine,lights,alarm,1,bonnet,boot,objective);
SendClientMessage(playerid,weiß, " Du hast soeben dein Fahrzeug (Fahrzeugname) ~0xE10000FF~aufgeschlossen");
}
case 1:
{
SetVehicleParamsEx(GetPlayerVehicleID(playerid),engine,lights,alarm,0,bonnet,boot,objective);
SendClientMessage(playerid,weiß, " Du hast soeben dein Fahrzeug (Fahrzeugname) ~0x00FF00FF~abgeschlossen");
}
}
return 1;
}Dir Formatierung der Nachrichten bekommst selber hin, oder?
http://wiki.sa-mp.com/wiki/Format_DE -
Willkommen im Forum.
Du machst einen Timer der eine Schleife durch alle Spieler beinhaltet. Dort fragst du ab, ob der Spieler nahe einem NPC ist (noch ein Loop im Loop) und zwar mit:
http://forum.sa-mp.com/showthread.php?t=164379Wenn ja, dann zeigst du die Sprechblase an.
Falls du mit dem Code nicht klar kommst, poste bitte das, was du bis dahin schon gemacht hast.
-
ocmd:glock(playerid,params[])
{
if(Spieler[playerid][GruppenID] == -1)return SendClientMessage(playerid,rot,"[SERVER]:{FFFFFF} Du bist in keiner Gruppe!");
new Float:xy,Float:yy,Float:zy;
if(GetPlayerState(playerid)==PLAYER_STATE_ONFOOT)
{
for(new i=0;i<MAX_VEHICLES;i++)
{
for(new x=0;x<sizeof cInfo;x++)
{
GetVehiclePos(i,xy,yy,zy);
if(IsPlayerInRangeOfPoint(playerid,3,xy,yy,zy))
{
if(i == cInfo[x][id_x] && Spieler[playerid][GruppenID] == cInfo[x][gowner])
{
GetVehicleParamsEx(i,engine,lights,alarm,doors,bonnet,boot,objective);
if(!doors)
{
SetVehicleParamsEx(i,engine,lights,alarm,1,bonnet,boot,objective);
return GameTextForPlayer(playerid,"~w~Gruppenfahrzeug~n~~r~abgeschlossen",2000,4);
}
SetVehicleParamsEx(i,engine,lights,alarm,0,bonnet,boot,objective);
return GameTextForPlayer(playerid,"~w~Gruppenfahrzeug~n~~g~aufgeschlossen",2000,4);
}
return SendClientMessage(playerid,rot,"[SERVER]:{FFFFFF} Das Fahrzeug gehört nicht deiner Gruppe!");
}
}
}
return SendClientMessage(playerid,rot,"[SERVER]:{FFFFFF} Du bist in keiner Nähe vom Gruppenfahrzeug, oder sitzt in keinem!");
}
else if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
{
if(GetPlayerVehicleID(playerid) == cInfo[x][id_x] && Spieler[playerid][GruppenID] == cInfo[x][id_x])
{
GetVehicleParamsEx(i,engine,lights,alarm,doors,bonnet,boot,objective);
if(!doors)
{
SetVehicleParamsEx(i,engine,lights,alarm,1,bonnet,boot,objective);
return GameTextForPlayer(playerid,"~w~Gruppenfahrzeug~n~~r~abgeschlossen",2000,4);
}
SetVehicleParamsEx(i,engine,lights,alarm,0,bonnet,boot,objective);
return GameTextForPlayer(playerid,"~w~Gruppenfahrzeug~n~~g~aufgeschlossen",2000,4);
}
return SendClientMessage(playerid,rot,"[SERVER]:{FFFFFF} Das Fahrzeug gehört nicht deiner Gruppe!");
}
return 1;
}Sollte so passen.
-
Was genau funktioniert nicht?
Irgendwelche Nachrichten die kommen, damit wir den Codeverlauf nachvollziehen können?Bist du in einem Auto oder nicht? Wann funktioniert es und wann nicht?
-
Lass es dir doch mal ausgeben:
printf("MD5: %s", MD5_Hash(inputtext));
printf("Input: %s", inputtext);
printf("MySQL: %s", mysql_ReturnPasswort(SpielerName(playerid)));Vor die strcmp-Abfrage einfügen.
Hast du das Passwort auch richtig in der Datenbank gespeichert, nicht dass du dich da vertippt hast, soll ja vorkommen.
-
Das liegt an der Schleife.
Die sollte so aussehen:
for(new x;x<sizeof cInfo;x++)^
{
if(veh == cInfo[x][id_x] && cInfo[x][gowner] == Spieler[playerid][GruppenID])
{
format(query,200,"UPDATE gruppencars SET x='%f',y='%f',z='%f',r='%f' WHERE idd='%i'",Pos[0],Pos[1],Pos[2],Pos[3],cInfo[x][idd]);
//hier muss natürlich noch mysql_query hin...
printf("Veh: %d cInfo: %d",veh,cInfo[x][id_x]);
return 1;
}
}
return SendClientMessage(playerid,rot,"[SERVER]:{FFFFFF} Du bist in keinem Gruppenfahrzeug!");Gewöhne dir bitte sofort wieder ab alles in eine Zeile zu schreiben, das zeugt nicht von Kompetenz, sondern ist einfach nur unübersichtlich.
-
Achso, der gleiche Code, hättest das mal gleich gesagt.

SetPlayerCheckpoint(playerid, RandomSpawn[rand][0],RandomSpawn[rand][1],RandomSpawn[rand][2], 5.0);
Unter dem "createPlayerCar" einfügen.
Dann hast du den Checkpoint dort wo das Auto ist (was du mit der Trucker Base meinst weiß ich nicht). -
Ok, füge bitte vor den beiden GiveMoney Folgendes ein und poste was geprintet wird:
printf("%0.2f und %0.2f",_money,-_money);
Damit wir erst mal wissen ob der Wert korrekt übergeben wird und nicht falsch berechnet wird.
-
Zeig doch mal den Code mit den 10 und 13 Cents. Ich glaube das nicht so ganz, so stark ungenau sind die Floats auch nicht, das sind ja 30%. Die Abweichungen liegen eigentlich im Promille Bereich.
Ich persönlich würde es nicht mit zwei Integers machen, nur so nebenbei.
-
Poste den Code mit dem du das Auto an dieser Trucker Base spawnen lässt und erkläre deine Frage nochmal genauer und nicht so wirr.
-
Zwei Variablen sind genauer als Floats, nur umständlicher beim Rechnen.
Ein Float ist möglicherweise nicht so genau, außer du rundest es auf, dafür aber besser beim rechnen.Die Qual der Wahl liegt bei dir.
-
Schau dir das mal an. Wenn du die Ende Position (Vorne) nimmst, dann bist du an der Position die du willst. Musst eben die Distanzen anpassen.
-
-
veh = sCarInfo[i][vehID];
-
Naja, das sollst du ja auch ersetzen.
Wie erstellst du denn die Autos nach denen du suchst? -
if(dialogid == AUTO_FIND)
{
if(!response)return SendClientMessage(playerid,-1,"Suche wurde abgebrochen!");
new veh, count = -1;
for(new i; i != MAX_VEHICLES; ++i)
{
if(!sCarInfo[i][scName][0])continue;
if(strcmp(PlayerName(playerid),sCarInfo[i][scName],false) == 0)
{
++count;
if(count == listitem)
{
veh = sCarInfo[i][real_vehicle_ID];
break;
}
}
}
new Float:Pos[3];
GetVehiclePos(veh,Pos[0],Pos[1],Pos[2]);
format(string,sizeof(string),"Dir wurde ein Checkpoint gesetzt! (CarID: %i) - Mache wieder /carfind um den Checkpoint zu löschen!",veh);
SendClientMessage(playerid,-1,string);
return SetPlayerCheckpoint(playerid, Pos[0],Pos[1],Pos[2], 6);
}
So?