Beiträge von root
-
-
Bin ich gerade zu Blöde ?
Es kommt immer dass Ich dieses Fahrzeug nicht fahren darf da ich nicht in der Fraktion bin
[07.08.2016 - 16:14:06] 1 0 1Code
Alles anzeigenprintf("%d %d %d",FFahrzeugInfo[vid][fFrakID],PlayerInfo[playerid][pMember],PlayerInfo[playerid][pLeader]); if(PlayerInfo[playerid][pMember] == FFahrzeugInfo[vid][fFrakID] && PlayerInfo[playerid][pLeader] == FFahrzeugInfo[vid][fFrakID]) { if(FFahrzeugInfo[vid][fCarRang] > PlayerInfo[playerid][pRang]) { SendClientMessage(playerid,COLOR_GRAU,"Du hast nicht den Entsprechenden Rang um das Fahrzeug zu Fahren."); return 1; } } return SendClientMessage(playerid,COLOR_GRAU,"Du kannst dieses Fraktionsfahrtzeug nicht Fahren da du nicht in der Fraktion bist."); Hier startet der motor bzw die Abfrage ob genug tank ist und so
Kannst auch einfach so was hier machen:
Codeif(PlayerInfo[playerid][pMember] != FFahrzeugInfo[vid][fFrakID] && PlayerInfo[playerid][pLeader] != FFahrzeugInfo[vid][fFrakID]) return SendClientMessage(playerid,COLOR_GRAU,"Du kannst dieses Fraktionsfahrtzeug nicht Fahren da du nicht in der Fraktion bist."); if(FFahrzeugInfo[vid][fCarRang] > PlayerInfo[playerid][pRang]) return SendClientMessage(playerid,COLOR_GRAU,"Du hast nicht den Entsprechenden Rang um das Fahrzeug zu Fahren.");
-
-
Man sieht doch im Video das nach dem kaufen mein Skin korrekt gesetzt wird.
Speicherst du beim Kaufen auch den neuen Skin in pData[playerid][P_Skin]?
-
Das 2te Else if wird nie ausgelöst. Musst beim 1sten Else if eine 2te Condition einbauen
Codeif(skin[playerid] < 280) skin[playerid]; //falls alter skin unter 280 ist else if(skin[playerid] > 287 && skin[playerid] <= 310) skin[playerid] = 303; //soll skinid 202-310 überspringen else if(skin[playerid] > 310) skin[playerid] = 280;//wieder von vorne anfangen SetPlayerSkin(playerid, skin[playerid]);
-
Hast du noch einen Test-Server?
Der Test-Server ist im Moment Offline.
-
Danke für die Info. Werde mir das ganze Ansehen.
//Edit
Muss das ganze mit dem Hoster abklärenDas Plugin ist weder Server noch TS gebunden. Das einzige was gemacht werden muss ist die TeamSpeak Channel Beschreibung auf folgende Anpassen:
Nach dem sollte es auf jedem x-Beliebigen Server funktionieren.
-
>> GitHub <<
Hallo Zusammen,
Einige von euch haben sicherlich folgenden Beitrag gesehen LINK
Nun ist es so weit.Features:
- Echt Zeit Kommunikation mit Spielern in der Umgebung
- Über Funk kann auch mit entfernten Spielern gesprochen werden
- Beim Funken wird die Stimme so verändert das es klar wird wenn man über Funk hört
- Funk-Towers
- 100% Kontrolle über PAWN
FAQ
Für was werden diese Funktionen gehookt?
Die beiden Fahrzeug Funktionen werden gebraucht um das Fahrzeug Model des Spielers zu speichern und an alle SAMP Voice Clients zu versenden. Damit wird das Reden noch realistischer. (Wenn man gemeinsam in einem Fahrzeug sitzt hört man die Leute im Auto gut, die Leute draussen aber fast gar nicht.)
Virtual World & Interior werden gebraucht da man ja nicht zwischen Virtuellen Welten und Interior kommunizieren sollen darf. Sonst würde man in einem Haus Interior (welches in der Regel ja doppelt Belegt ist mit Virtuellen Welten) plötzlich alle Leute hören.Was ist der Aktuelle Status?
Aktuelle Laufen Open Beta Vorbereitungen.
D.h ich hoffe in der nächste Woche noch eine Open Beta, eventuell mit Event vorbereiten zu können.
Es gibt aber auch noch ein paar Bugs zu fixen (zum Teil stürzt der GTA Client ab, TeamSpeak stürzt ab wenn GTA nicht mehr Verbunden ist und man TS beenden will)Wie funktionieren die Funk Türme?
Damit Funk Türme überhaupt erst Verwendet werden muss mindestens 1 Turm erstellt sein. Gibt es keinen Turm auf dem Server gibt es keine Einschränkungen, d.h man kann über die ganze Map empfangen und senden,
Wenn es Funktürme gibt, muss man in dem Radius eines Funkturmes sein um sein Funkgerät verwenden, bzw. Funksprüche empfangen oder abzusenden können.Wie funktioniert der Funk?
Der Funk hebt prinzipiell nur die Hörreichweite auf und jagt die Stimme von dem Funker durch einen Filter. Damit hört es sich "ungefähr" so an als würde man wirklich durch ein Funkgerät sprechen.
Zurzeit ist dieser Filter ziemlich Basic. Aber falls sich jemand mit DSP Filtern für C++ auskennt darf sich dieser gerne melden.Wie kann man an der Beta teilnehmen?
Da es eine Open-Beta ist ist keine Teilnahme erforderlich. Ich werde dieses Post aktualisieren sobald der Download Freigegeben ist.Source Code?
Zurzeit ist das Projekt nicht Open-Source. Vielleicht wird es das sobald ich keine Lust mehr für die Weiterentwicklung habe. (Was zurzeit noch nicht der Fall ist)Wann gibt es einen Finalen Release?
Kann kein Datum geben aber die Open-Beta wird hoffentlich bald starten.
Die Finale Version wird sicherlich nicht vor 2017 kommen. Aber der Open-Beta werden Patches direkt Freigegeben und die neuste Version kann direkt getestet werden.Kannst du bei uns im Projekt mitmachen?
Nein, solche Konversationen werden gelöscht
Freundliche Grüsse
TheBlueFireKing
Entwickler von SAMP Voice -
Weiss jemand ob Bots auch von ShowPlayerMarkers(PLAYER_MARKERS_MODE_GLOBAL); betroffen sind?
Die MapIcons verschwinden nämlich nachdem man genug weit von den Bots weg ist, was eben ja nicht sein sollte mit PLAYER_MARKERS_MODE_GLOBAL. Kann das mit Playern gerade nicht testen.
-
Finde beide sehr schön.
Aber rein logisch: eine Admin Seite ist für mich eher etwas wo nur spezielle Leute Zugriff haben. Warum sollte man sich da mit Google / Facebook / Twitter anmelden können.
Aber für ein normales Login sieht es super aus!
-
Ich kenne die Programmiersprache "Visual Studio" zwar nicht aber das schlauste wäre wie wohl D_K schon gesagt hat Sockets.
Wenn du es dem SAMP Server mitteilen willst brauchst du wohl eine SAMP Plugin welches den Socket erstellt. -
-
Ich möchte über ne Webanwendung sehen wo gerade die einzelnen Streifenwaagen usw unterwegs sind
Kannst dir mal das hier ansehen: http://forum.sa-mp.com/showthread.php?p=2976662
-
Direkt mit SQL
Wenn die Abfrage ein Resultat zurück gibt ist das Passwort richtig. ACHTUNG: Das eingegeben Passwort auch vorher Hashen.
Oder du liest das Passwort aus der Datenbank aus und vergleichst es mit PAWN.
Codestrcmp(gehashtedPasswort, PasswortHashAusDatenbank, false) == 0) { //Pass Korrekt } else { //pass nicht Korrekt }
Natürlich immer mit dem gleichen SALT sonst wird es nicht klappen.
-
-
-
Mach das +1 bei MAX_FRAKS weg.
Im Debug steht auch "Run time error 4: "Array index out of bounds"
Heisst soviel wie du greifst auf einen Index Bereich zu der nicht existiert.Code
Alles anzeigenocmd:fraktionen(playerid) { new string[2000]; string = "Fraktionsid\tFraktionsname\tLeader\tMemberanzahl"; for(new i=1; i < MAX_FRAKS; i++) { format(string,sizeof(string),"%s\n%d\t%s\t%s\t%d\n",string,fData[i][fId],fData[i][fName],fData[i][fLeaderName],fData[i][fMemberInt]); } ShowPlayerDialog(playerid,DIALOG_FRACDATA,DIALOG_STYLE_TABLIST_HEADERS,"Fraktionen",string,"Mehr Infos","Abbrechen"); return 1; }
-
Mit dem return hast du bereits die If Abfrage abgeschlossen und darfs dann nicht noch Klammern machen,
Code
Alles anzeigenocmd:abbauen(playerid,params[]) { if(dienst[playerid] == 0) { if(PlayerInfo[playerid][pSpitzhacke] == 1 && PlayerInfo[playerid[pRucksack] == 1) return SendClientMessage(playerid,COLOR_PURPLE,"Du hast deine Ausrüstung nicht dabei!");//ERROR ZEILE if(PlayerInfo[playerid][pKristalle] < 100) return SendClientMessage(playerid,COLOR_PURPLE,"Dein Rucksack ist voll .. gebe diese erstmal ab!"); for(new i=0;i<MAX_KRISTALLE;i++) { if(IsPlayerInRangeOfPoint(playerid,2.5,SKristallInfo[i][kposX],SKristallInfo[i][kposY],SKristallInfo[i][kposZ]) && SKristallInfo[i][KristallCreated] == true) { new randzeit = random(6000) + 5000; SendClientMessage(playerid,COLOR_PURPLE,"* Du beginnst den Kristall abzubauen!"); TogglePlayerControllable(playerid,0);//FREEZE SetPlayerSpecialAction(playerid,SPECIAL_ACTION_DANCE1); //SetTimer("KristallErnte",randzeit,0); KristallTimer[playerid] = SetTimerEx("KristallErnte", randzeit, true, "i", playerid); return 1; } } } return 1; }
-
Wäre folgendes denn auch richtig?
Codefor(new i = 0; i < MAX_PLAYERS; i++){ if(!IsPlayerConnected(playerid)) continue; //Die Variante sollte ja eig auch durchgehen format(text,sizeof(text), "\nID: %i, Name: %s, Geld: %i", pID, pData[pID][pName], pData[pID][pMoney]); }
Aber vom Prinzip habe ich alles richtig gemacht oder?
lg
Wie gesagt überschreibst du immer den vorherigen string. Somit wird dir nur der letze Spieler im Dialog angezeigt.
Du musst es wie folgt machen:Codeocmd:showplayers(playerid, params){ new text[2048], pID; //String grösse eventuell noch anpassen for(new i = 0; i < MAX_PLAYERS; i++){ if(!IsPlayerConnected(playerid)) continue; format(text,sizeof(text), "%s\nID: %i, Name: %s, Geld: %i", text, pID, pData[pID][pName], pData[pID][pMoney]); } ShowPlayerDialog(playerid, DIALOG_SHOWPLAYERS, DIALOG_STYLE_MSGBOX, "ALLE ONLINE SPIELER", text, "Schliessen", ""); return 1; }
-
Mit dem return 1; in der Schleife brichtst du denn ganzen Command ab.
Mach das zu einem continue;
continue; heisst einfach er soll mit dem nächsten in der Schleife weitermachen.//Edit
ausserdem wird dir so nur der letze Online Spieler angezeigt da du den string immer wieder überschreibst.