Merhabalar, sıfırdan yazdığımız modda spec sistemini defalarca değiştirdik, başka modlardaki spec sistemlerini denedik ancak hiç biri çalışmadı.
PlayerSpectatePlayer çağırılıyor ancak komutu uygulayan kişinin statesi PLAYER_STATE_SPECTATE olmuyor. Bu konuda yardımcı olursanız sevinirim.
Modunuzda 0 indeks üzerinde bir şey var mı?
Örnek;
Degisken[playerid] = 0;
ya da şöyle bir şey var mı?
TogglePlayerSpectating(playerid, 0);
Alıntı yapılan: TAKTAK26 - 07 Temmuz 2021, 22:58:14Modunuzda 0 indeks üzerinde bir şey var mı?
Örnek;
Degisken[playerid] = 0;
ya da şöyle bir şey var mı?
TogglePlayerSpectating(playerid, 0);
PlayerData[playerid][pSpec] = userid;
InteriorDuzenle(playerid, GetPlayerInterior(userid));
VWDuzenle(playerid, GetPlayerVirtualWorld(userid));
TogglePlayerSpectating(playerid, 1);
if(IsPlayerInAnyVehicle(userid)) PlayerSpectateVehicle(playerid, GetPlayerVehicleID(userid));
if(!IsPlayerInAnyVehicle(userid)) PlayerSpectatePlayer(playerid, userid);
PlayerData[playerid][pSpec] = userid;
InteriorDuzenle(playerid, GetPlayerInterior(userid));
VWDuzenle(playerid, GetPlayerVirtualWorld(userid));
TogglePlayerSpectating(playerid, 1);
if(IsPlayerInAnyVehicle(id))
{
PlayerSpectateVehicle(playerid, GetPlayerVehicleID(id));
}
else
{
PlayerSpectatePlayer(playerid, id);
}İlk if tanımınız doğru ancak ikinci tanımınız yanlış birde bunu deneyin.
Alıntı yapılan: Kjen - 10 Temmuz 2021, 23:01:03PlayerData[playerid][pSpec] = userid;
InteriorDuzenle(playerid, GetPlayerInterior(userid));
VWDuzenle(playerid, GetPlayerVirtualWorld(userid));
TogglePlayerSpectating(playerid, 1);
if(IsPlayerInAnyVehicle(id))
{
PlayerSpectateVehicle(playerid, GetPlayerVehicleID(id));
}
else
{
PlayerSpectatePlayer(playerid, id);
}İlk if tanımınız doğru ancak ikinci tanımınız yanlış birde bunu deneyin.
Bununla bir alakası olacağını sanmıyorum çünki direkt olarak:
PlayerData[playerid][pSpec] = userid;
InteriorDuzenle(playerid, GetPlayerInterior(userid));
VWDuzenle(playerid, GetPlayerVirtualWorld(userid));
TogglePlayerSpectating(playerid, 1);
PlayerSpectatePlayer(playerid, userid);
şeklinde denemiştim.
Alıntı yapılan: AloneWarrioR - 11 Temmuz 2021, 11:40:31Alıntı yapılan: Kjen - 10 Temmuz 2021, 23:01:03PlayerData[playerid][pSpec] = userid;
InteriorDuzenle(playerid, GetPlayerInterior(userid));
VWDuzenle(playerid, GetPlayerVirtualWorld(userid));
TogglePlayerSpectating(playerid, 1);
if(IsPlayerInAnyVehicle(id))
{
PlayerSpectateVehicle(playerid, GetPlayerVehicleID(id));
}
else
{
PlayerSpectatePlayer(playerid, id);
}İlk if tanımınız doğru ancak ikinci tanımınız yanlış birde bunu deneyin.
Bununla bir alakası olacağını sanmıyorum çünki direkt olarak:
PlayerData[playerid][pSpec] = userid;
InteriorDuzenle(playerid, GetPlayerInterior(userid));
VWDuzenle(playerid, GetPlayerVirtualWorld(userid));
TogglePlayerSpectating(playerid, 1);
PlayerSpectatePlayer(playerid, userid);
şeklinde denemiştim.
Yani kişi araçtayken bile aracı değil kişiyi specletmeye çalıştınız öylemi? :kahkaha2:
CMD:getplayerstate(playerid, params[])
{
new id;
if(sscanf(params, "u", id)) return SendClientMessage(playerid, "/getplayerstate [ID]");
if(GetPlayerState(id) != PLAYER_STATE_NONE)
{
SendClientMessage(playerid, "Kişinin durumu PLAYER_STATE_NONE");
}
else if(GetPlayerState(id) != PLAYER_STATE_ONFOOT)
{
SendClientMessage(playerid, "Kişinin durumu PLAYER_STATE_ONFOOT");
}
else if(GetPlayerState(id) != PLAYER_STATE_DRIVER)
{
SendClientMessage(playerid, "Kişinin durumu PLAYER_STATE_DRIVER");
}
else if(GetPlayerState(id) != PLAYER_STATE_PASSENGER)
{
SendClientMessage(playerid, "Kişinin durumu PLAYER_STATE_PASSENGER");
}
else if(GetPlayerState(id) != PLAYER_STATE_EXIT_VEHICLE)
{
SendClientMessage(playerid, "Kişinin durumu PLAYER_STATE_EXIT_VEHICLE");
}
else if(GetPlayerState(id) != PLAYER_STATE_ENTER_VEHICLE_DRIVER)
{
SendClientMessage(playerid, "Kişinin durumu PLAYER_STATE_ENTER_VEHICLE_DRIVER");
}
else if(GetPlayerState(id) != PLAYER_STATE_ENTER_VEHICLE_PASSENGER)
{
SendClientMessage(playerid, "Kişinin durumu PLAYER_STATE_ENTER_VEHICLE_PASSENGER");
}
else if(GetPlayerState(id) != PLAYER_STATE_WASTED)
{
SendClientMessage(playerid, "Kişinin durumu PLAYER_STATE_WASTED");
}
else if(GetPlayerState(id) != PLAYER_STATE_)
{
SendClientMessage(playerid, "Kişinin durumu PLAYER_STATE_SPAWNED");
}
else if(GetPlayerState(id) != PLAYER_STATE_SPECTATING)
{
SendClientMessage(playerid, "Kişinin durumu PLAYER_STATE_SPECTATING");
}
return 1;
}
Üstte verdiğim spec'i ekleyip ardından bu komutu ekledikten sonra spece geçip test ediniz ve gerçekten SPECTATING durumuna geçmiyorsa...
Alıntı yapılan: Kjen - 11 Temmuz 2021, 16:26:11CMD:getplayerstate(playerid, params[])
{
new id;
if(sscanf(params, "u", id)) return SendClientMessage(playerid, "/getplayerstate [ID]");
if(GetPlayerState(id) != PLAYER_STATE_NONE)
{
SendClientMessage(playerid, "Kişinin durumu PLAYER_STATE_NONE");
}
else if(GetPlayerState(id) != PLAYER_STATE_ONFOOT)
{
SendClientMessage(playerid, "Kişinin durumu PLAYER_STATE_ONFOOT");
}
else if(GetPlayerState(id) != PLAYER_STATE_DRIVER)
{
SendClientMessage(playerid, "Kişinin durumu PLAYER_STATE_DRIVER");
}
else if(GetPlayerState(id) != PLAYER_STATE_PASSENGER)
{
SendClientMessage(playerid, "Kişinin durumu PLAYER_STATE_PASSENGER");
}
else if(GetPlayerState(id) != PLAYER_STATE_EXIT_VEHICLE)
{
SendClientMessage(playerid, "Kişinin durumu PLAYER_STATE_EXIT_VEHICLE");
}
else if(GetPlayerState(id) != PLAYER_STATE_ENTER_VEHICLE_DRIVER)
{
SendClientMessage(playerid, "Kişinin durumu PLAYER_STATE_ENTER_VEHICLE_DRIVER");
}
else if(GetPlayerState(id) != PLAYER_STATE_ENTER_VEHICLE_PASSENGER)
{
SendClientMessage(playerid, "Kişinin durumu PLAYER_STATE_ENTER_VEHICLE_PASSENGER");
}
else if(GetPlayerState(id) != PLAYER_STATE_WASTED)
{
SendClientMessage(playerid, "Kişinin durumu PLAYER_STATE_WASTED");
}
else if(GetPlayerState(id) != PLAYER_STATE_)
{
SendClientMessage(playerid, "Kişinin durumu PLAYER_STATE_SPAWNED");
}
else if(GetPlayerState(id) != PLAYER_STATE_SPECTATING)
{
SendClientMessage(playerid, "Kişinin durumu PLAYER_STATE_SPECTATING");
}
return 1;
}
Üstte verdiğim spec'i ekleyip ardından bu komutu ekledikten sonra spece geçip test ediniz ve gerçekten SPECTATING durumuna geçmiyorsa...
if(GetPlayerState(id) != PLAYER_STATE_NONE) yaparsan eşit değil ise olur, if(GetPlayerState(id) == PLAYER_STATE_NONE) gibi olmalı
Alıntı yapılan: Kjen - 11 Temmuz 2021, 16:03:37Alıntı yapılan: AloneWarrioR - 11 Temmuz 2021, 11:40:31Alıntı yapılan: Kjen - 10 Temmuz 2021, 23:01:03PlayerData[playerid][pSpec] = userid;
InteriorDuzenle(playerid, GetPlayerInterior(userid));
VWDuzenle(playerid, GetPlayerVirtualWorld(userid));
TogglePlayerSpectating(playerid, 1);
if(IsPlayerInAnyVehicle(id))
{
PlayerSpectateVehicle(playerid, GetPlayerVehicleID(id));
}
else
{
PlayerSpectatePlayer(playerid, id);
}İlk if tanımınız doğru ancak ikinci tanımınız yanlış birde bunu deneyin.
Bununla bir alakası olacağını sanmıyorum çünki direkt olarak:
PlayerData[playerid][pSpec] = userid;
InteriorDuzenle(playerid, GetPlayerInterior(userid));
VWDuzenle(playerid, GetPlayerVirtualWorld(userid));
TogglePlayerSpectating(playerid, 1);
PlayerSpectatePlayer(playerid, userid);
şeklinde denemiştim.
Yani kişi araçtayken bile aracı değil kişiyi specletmeye çalıştınız öylemi? :kahkaha2:
Hayır, test amaçlı onfoot olan birine denediğimde olmuyordu.
Alıntı yapılan: Kjen - 11 Temmuz 2021, 16:26:11CMD:getplayerstate(playerid, params[])
{
new id;
if(sscanf(params, "u", id)) return SendClientMessage(playerid, "/getplayerstate [ID]");
if(GetPlayerState(id) != PLAYER_STATE_NONE)
{
SendClientMessage(playerid, "Kişinin durumu PLAYER_STATE_NONE");
}
else if(GetPlayerState(id) != PLAYER_STATE_ONFOOT)
{
SendClientMessage(playerid, "Kişinin durumu PLAYER_STATE_ONFOOT");
}
else if(GetPlayerState(id) != PLAYER_STATE_DRIVER)
{
SendClientMessage(playerid, "Kişinin durumu PLAYER_STATE_DRIVER");
}
else if(GetPlayerState(id) != PLAYER_STATE_PASSENGER)
{
SendClientMessage(playerid, "Kişinin durumu PLAYER_STATE_PASSENGER");
}
else if(GetPlayerState(id) != PLAYER_STATE_EXIT_VEHICLE)
{
SendClientMessage(playerid, "Kişinin durumu PLAYER_STATE_EXIT_VEHICLE");
}
else if(GetPlayerState(id) != PLAYER_STATE_ENTER_VEHICLE_DRIVER)
{
SendClientMessage(playerid, "Kişinin durumu PLAYER_STATE_ENTER_VEHICLE_DRIVER");
}
else if(GetPlayerState(id) != PLAYER_STATE_ENTER_VEHICLE_PASSENGER)
{
SendClientMessage(playerid, "Kişinin durumu PLAYER_STATE_ENTER_VEHICLE_PASSENGER");
}
else if(GetPlayerState(id) != PLAYER_STATE_WASTED)
{
SendClientMessage(playerid, "Kişinin durumu PLAYER_STATE_WASTED");
}
else if(GetPlayerState(id) != PLAYER_STATE_)
{
SendClientMessage(playerid, "Kişinin durumu PLAYER_STATE_SPAWNED");
}
else if(GetPlayerState(id) != PLAYER_STATE_SPECTATING)
{
SendClientMessage(playerid, "Kişinin durumu PLAYER_STATE_SPECTATING");
}
return 1;
}
Üstte verdiğim spec'i ekleyip ardından bu komutu ekledikten sonra spece geçip test ediniz ve gerçekten SPECTATING durumuna geçmiyorsa...
Bunu zaten debug olarak denemiştim, PLAYER_STATE_SPECTATİNGE GEÇMİYOR
Alıntı yapılan: AloneWarrioR - 12 Temmuz 2021, 12:12:26Alıntı yapılan: Kjen - 11 Temmuz 2021, 16:03:37Alıntı yapılan: AloneWarrioR - 11 Temmuz 2021, 11:40:31Alıntı yapılan: Kjen - 10 Temmuz 2021, 23:01:03PlayerData[playerid][pSpec] = userid;
InteriorDuzenle(playerid, GetPlayerInterior(userid));
VWDuzenle(playerid, GetPlayerVirtualWorld(userid));
TogglePlayerSpectating(playerid, 1);
if(IsPlayerInAnyVehicle(id))
{
PlayerSpectateVehicle(playerid, GetPlayerVehicleID(id));
}
else
{
PlayerSpectatePlayer(playerid, id);
}İlk if tanımınız doğru ancak ikinci tanımınız yanlış birde bunu deneyin.
Bununla bir alakası olacağını sanmıyorum çünki direkt olarak:
PlayerData[playerid][pSpec] = userid;
InteriorDuzenle(playerid, GetPlayerInterior(userid));
VWDuzenle(playerid, GetPlayerVirtualWorld(userid));
TogglePlayerSpectating(playerid, 1);
PlayerSpectatePlayer(playerid, userid);
şeklinde denemiştim.
Yani kişi araçtayken bile aracı değil kişiyi specletmeye çalıştınız öylemi? :kahkaha2:
Hayır, test amaçlı onfoot olan birine denediğimde olmuyordu.
Alıntı yapılan: Kjen - 11 Temmuz 2021, 16:26:11CMD:getplayerstate(playerid, params[])
{
new id;
if(sscanf(params, "u", id)) return SendClientMessage(playerid, "/getplayerstate [ID]");
if(GetPlayerState(id) != PLAYER_STATE_NONE)
{
SendClientMessage(playerid, "Kişinin durumu PLAYER_STATE_NONE");
}
else if(GetPlayerState(id) != PLAYER_STATE_ONFOOT)
{
SendClientMessage(playerid, "Kişinin durumu PLAYER_STATE_ONFOOT");
}
else if(GetPlayerState(id) != PLAYER_STATE_DRIVER)
{
SendClientMessage(playerid, "Kişinin durumu PLAYER_STATE_DRIVER");
}
else if(GetPlayerState(id) != PLAYER_STATE_PASSENGER)
{
SendClientMessage(playerid, "Kişinin durumu PLAYER_STATE_PASSENGER");
}
else if(GetPlayerState(id) != PLAYER_STATE_EXIT_VEHICLE)
{
SendClientMessage(playerid, "Kişinin durumu PLAYER_STATE_EXIT_VEHICLE");
}
else if(GetPlayerState(id) != PLAYER_STATE_ENTER_VEHICLE_DRIVER)
{
SendClientMessage(playerid, "Kişinin durumu PLAYER_STATE_ENTER_VEHICLE_DRIVER");
}
else if(GetPlayerState(id) != PLAYER_STATE_ENTER_VEHICLE_PASSENGER)
{
SendClientMessage(playerid, "Kişinin durumu PLAYER_STATE_ENTER_VEHICLE_PASSENGER");
}
else if(GetPlayerState(id) != PLAYER_STATE_WASTED)
{
SendClientMessage(playerid, "Kişinin durumu PLAYER_STATE_WASTED");
}
else if(GetPlayerState(id) != PLAYER_STATE_)
{
SendClientMessage(playerid, "Kişinin durumu PLAYER_STATE_SPAWNED");
}
else if(GetPlayerState(id) != PLAYER_STATE_SPECTATING)
{
SendClientMessage(playerid, "Kişinin durumu PLAYER_STATE_SPECTATING");
}
return 1;
}
Üstte verdiğim spec'i ekleyip ardından bu komutu ekledikten sonra spece geçip test ediniz ve gerçekten SPECTATING durumuna geçmiyorsa...
Bunu zaten debug olarak denemiştim, PLAYER_STATE_SPECTATİNGE GEÇMİYOR
Pawn.Raknet kütüphanesini kullanıyor musunuz?
Alıntı yapılan: SpawN1 - 12 Temmuz 2021, 13:57:18Alıntı yapılan: AloneWarrioR - 12 Temmuz 2021, 12:12:26Alıntı yapılan: Kjen - 11 Temmuz 2021, 16:03:37Alıntı yapılan: AloneWarrioR - 11 Temmuz 2021, 11:40:31Alıntı yapılan: Kjen - 10 Temmuz 2021, 23:01:03PlayerData[playerid][pSpec] = userid;
InteriorDuzenle(playerid, GetPlayerInterior(userid));
VWDuzenle(playerid, GetPlayerVirtualWorld(userid));
TogglePlayerSpectating(playerid, 1);
if(IsPlayerInAnyVehicle(id))
{
PlayerSpectateVehicle(playerid, GetPlayerVehicleID(id));
}
else
{
PlayerSpectatePlayer(playerid, id);
}İlk if tanımınız doğru ancak ikinci tanımınız yanlış birde bunu deneyin.
Bununla bir alakası olacağını sanmıyorum çünki direkt olarak:
PlayerData[playerid][pSpec] = userid;
InteriorDuzenle(playerid, GetPlayerInterior(userid));
VWDuzenle(playerid, GetPlayerVirtualWorld(userid));
TogglePlayerSpectating(playerid, 1);
PlayerSpectatePlayer(playerid, userid);
şeklinde denemiştim.
Yani kişi araçtayken bile aracı değil kişiyi specletmeye çalıştınız öylemi? :kahkaha2:
Hayır, test amaçlı onfoot olan birine denediğimde olmuyordu.
Alıntı yapılan: Kjen - 11 Temmuz 2021, 16:26:11CMD:getplayerstate(playerid, params[])
{
new id;
if(sscanf(params, "u", id)) return SendClientMessage(playerid, "/getplayerstate [ID]");
if(GetPlayerState(id) != PLAYER_STATE_NONE)
{
SendClientMessage(playerid, "Kişinin durumu PLAYER_STATE_NONE");
}
else if(GetPlayerState(id) != PLAYER_STATE_ONFOOT)
{
SendClientMessage(playerid, "Kişinin durumu PLAYER_STATE_ONFOOT");
}
else if(GetPlayerState(id) != PLAYER_STATE_DRIVER)
{
SendClientMessage(playerid, "Kişinin durumu PLAYER_STATE_DRIVER");
}
else if(GetPlayerState(id) != PLAYER_STATE_PASSENGER)
{
SendClientMessage(playerid, "Kişinin durumu PLAYER_STATE_PASSENGER");
}
else if(GetPlayerState(id) != PLAYER_STATE_EXIT_VEHICLE)
{
SendClientMessage(playerid, "Kişinin durumu PLAYER_STATE_EXIT_VEHICLE");
}
else if(GetPlayerState(id) != PLAYER_STATE_ENTER_VEHICLE_DRIVER)
{
SendClientMessage(playerid, "Kişinin durumu PLAYER_STATE_ENTER_VEHICLE_DRIVER");
}
else if(GetPlayerState(id) != PLAYER_STATE_ENTER_VEHICLE_PASSENGER)
{
SendClientMessage(playerid, "Kişinin durumu PLAYER_STATE_ENTER_VEHICLE_PASSENGER");
}
else if(GetPlayerState(id) != PLAYER_STATE_WASTED)
{
SendClientMessage(playerid, "Kişinin durumu PLAYER_STATE_WASTED");
}
else if(GetPlayerState(id) != PLAYER_STATE_)
{
SendClientMessage(playerid, "Kişinin durumu PLAYER_STATE_SPAWNED");
}
else if(GetPlayerState(id) != PLAYER_STATE_SPECTATING)
{
SendClientMessage(playerid, "Kişinin durumu PLAYER_STATE_SPECTATING");
}
return 1;
}
Üstte verdiğim spec'i ekleyip ardından bu komutu ekledikten sonra spece geçip test ediniz ve gerçekten SPECTATING durumuna geçmiyorsa...
Bunu zaten debug olarak denemiştim, PLAYER_STATE_SPECTATİNGE GEÇMİYOR
Pawn.Raknet kütüphanesini kullanıyor musunuz?
evet anticheat amaçlı kullanıyoruz
Pawn.Raknet includesini devre dışı bırakıp denedim, sorun ortadan kalkmadı.
Spec attığımızda spectate 9 (PLAYER_STATE_SPECTATING) gösteriyor ama spec yok. (Toggleplayerspectating de bence sorun)
Alıntı yapılan: AloneWarrioR - 12 Temmuz 2021, 14:53:26Pawn.Raknet includesini devre dışı bırakıp denedim, sorun ortadan kalkmadı.
Hayır öyle birşey demek istemedim, Link (https://github.com/katursis/Pawn.RakNet/wiki/SpectatingSync) Bu linkten SpectatingSync Paketine printf("Oyuncu birini izliyor."); Yazarsanız packetin çalışıp çalışmadığını öğrenebilirsiniz, kendiniz bir spec yapabilirsiniz örnek:
CMD:spec(playerid, params[])
{
new
Float:camX,
Float:camY,
Float:camZ,
Float:vecX,
Float:vecY,
id,
Float:vecZ;
if(sscanf(params, "u", id)) return SendClientMessage(playerid, 0xFF0000FF, "/spec [ID]");
if(id == INVALID_PLAYER_ID) return SendClientMessage(playerid, 0xFF0000FF, "İzlemek istediğin oyuncu sunucuya bağlı değil.");
if(!IsPlayerSpawned(id)) return SendClientMessage(playerid, 0xFF0000FF, "Bu oyuncu spawn olmamış.");
if(id == playerid) return SendClientMessage(playerid, 0xFF0000FF, "Kendini izleyemezsin.");
GetPlayerCameraPos(id, camX, camY, camZ);
GetPlayerCameraFrontVector(id, vecX, vecY, vecZ);
SetPlayerCameraPos(playerid, camX, camY, camZ);
SetPlayerCameraLookAt(playerid, camX+vecX, camY+vecY, camZ+vecZ);
return 1;
}Küçük birşey yazdım OnPlayerUpdate ile geliştirip oyuncu haraket ettiğinde sizin kameranız da haraket edebilir teşekkürler.
Alıntı yapılan: SpawN1 - 12 Temmuz 2021, 16:12:35Alıntı yapılan: AloneWarrioR - 12 Temmuz 2021, 14:53:26Pawn.Raknet includesini devre dışı bırakıp denedim, sorun ortadan kalkmadı.
Hayır öyle birşey demek istemedim, Link (https://github.com/katursis/Pawn.RakNet/wiki/SpectatingSync) Bu linkten SpectatingSync Paketine printf("Oyuncu birini izliyor."); Yazarsanız packetin çalışıp çalışmadığını öğrenebilirsiniz, kendiniz bir spec yapabilirsiniz örnek:
CMD:spec(playerid, params[])
{
new
Float:camX,
Float:camY,
Float:camZ,
Float:vecX,
Float:vecY,
id,
Float:vecZ;
if(sscanf(params, "u", id)) return SendClientMessage(playerid, 0xFF0000FF, "/spec [ID]");
if(id == INVALID_PLAYER_ID) return SendClientMessage(playerid, 0xFF0000FF, "İzlemek istediğin oyuncu sunucuya bağlı değil.");
if(!IsPlayerSpawned(id)) return SendClientMessage(playerid, 0xFF0000FF, "Bu oyuncu spawn olmamış.");
if(id == playerid) return SendClientMessage(playerid, 0xFF0000FF, "Kendini izleyemezsin.");
GetPlayerCameraPos(id, camX, camY, camZ);
GetPlayerCameraFrontVector(id, vecX, vecY, vecZ);
SetPlayerCameraPos(playerid, camX, camY, camZ);
SetPlayerCameraLookAt(playerid, camX+vecX, camY+vecY, camZ+vecZ);
return 1;
}
Küçük birşey yazdım OnPlayerUpdate ile geliştirip oyuncu haraket ettiğinde sizin kameranız da haraket edebilir teşekkürler.
bunu kullanıyorum şuanlık
Alıntı yapılan: Bölüm kuralları10 günü geçen konulara cevap gelmediği taktirde konu sahibi tarafından konu altına güncel yazılmazsa konu kilitlenip, kilitli konular bölümüne taşınacaktır.
K/A