[CSGO:TIP] Protobuf 넣을때 팁

2021. 1. 20. 23:25·소스모드/CSGO

이전에 단편적으로 비슷한글을 올린적이 있다.

바로 카솟,데매,팀포등에서 사용하던 화면흔들기 코드를 그대로 사용하면

서버가 팅기게된다. 이유는 BfWriteByte를 지원하지 않는데 사용했기 때문이었다.

따라서 Protobuf를 사용하라고 글을 올렸었다.

​

일단 이글을 올린 이유는 아래부터 시작한다.


1. 일반적으로 Protobuf를 보면 Angle, Bool, Color, Float, Int, String ... 등 BfWrite에 있는건 전부 있다.

이때 중요한건 BfWrite에는 안써도 됬던 값인 const char[] field 즉 "여기부분값"을 새로 찾아서 넣어줘야 한다.

여기서 문제가 발생했다.

​

예를들어 단순히 컨버팅작업을 통해 채팅태그 기능을 만든다 치자. ( 카솟 - > 글옵 )

그럼 카솟 코드는 뭐 Sayhook안에 어쩌구저쩌구 써놓고 BfWrite를 사용한 코드가 있을것이다.

stock SayText2ToTeam(client, team, const String:message[], any:...) { new Handle:buffer = INVALID_HANDLE; new String:txt[255]; for(new i = 1; i <= MaxClients; i++){ if(IsClientInGame(i)){ new targetTeam = GetClientTeam(i); if(targetTeam == team || targetTeam == TEAM_SPECTATOR){ SetGlobalTransTarget(i); VFormat(txt, sizeof(txt), message, 3); buffer = StartMessageOne("SayText2", i); if (buffer != INVALID_HANDLE) { BfWriteByte(buffer, client); BfWriteByte(buffer, true); BfWriteString(buffer, txt); EndMessage(); buffer = INVALID_HANDLE; } } } } }

뭐 대충 이런식으로 이런거는 직접 컨버팅할필요 없이 구글링하면 바로 나온다.

아래의 코드를 쓰면된다.

stock PbSayText2(client, author = 0, bool:bWantsToChat = false, const String:szFormat[], any:...) { decl String:szSendMsg[192]; VFormat(szSendMsg, sizeof(szSendMsg), szFormat, 5); StrCat(szSendMsg, sizeof(szSendMsg), "\n"); new Handle:pb = StartMessageOne("SayText2", client); if (pb != INVALID_HANDLE) { PbSetInt(pb, "ent_idx", author); PbSetBool(pb, "chat", bWantsToChat); PbSetString(pb, "msg_name", szSendMsg); PbAddString(pb, "params", ""); PbAddString(pb, "params", ""); PbAddString(pb, "params", ""); PbAddString(pb, "params", ""); EndMessage(); } }

이걸 쓰면 똑같은 기능을 글옵에서 쓸수있다.


2. 근데 위기능은 어디서나 자주쓰이는 기능이라 찾기도 쉽고 굳이 내가 만들필요없다.

​

문제는 바로 생소한것은 구글링으로 나오지 않는다는점이다.

​

아래는 어제오늘 게렛쨩의 stocklib를 컨버팅하다 막힌 부분이다.

Pbset값 중간에 ""에 뭘넣을지 몰라서 헤매고있었다.

시1발 여기에 뭘넣지? 필드값인데 그냥 "1234", "param"이런거 넣어주면되나??싶었는데

아니었다. 넣으니 블래밍이 떠서 바로 서버를 껏다.

​

해답은 바로 아래에 있었다.

​

​

반드시 찾아봐야할 사이트

 

Counter-Strike: Global Offensive UserMessages - AlliedModders Wiki

Counter-Strike: Global Offensive UserMessages Counter-Strike: Global Offensive uses Google's Protocol Buffers instead of Valve's traditional UserMessages. The data on this page was read from [1] . The initial versions of these files were provided by Valve and updated by the AlliedModders staff. //=...

wiki.alliedmods.net

​

이곳이다.

이곳에 들어가면 엄청난 정보들이 나무위키처럼 리스트로 있는데

빨간 동그라미 친값이 Protobuf넣어줄값이다. 그안에 위에서 언급했던 const char[] field부분에 값을 써주면된다.

​

Ex) PbSetInt(pb, "ent_idx", Client);

​

'소스모드 > CSGO' 카테고리의 다른 글

[CSGO] 스폰엔티티를 플러그인으로 생성  (0) 2021.03.19
[CSGO:TIP] mp_roundtime이 안먹힐때  (0) 2021.01.20
[CSGO:Plugin] HP바 플러그인  (0) 2021.01.20
[CSGO:TIP] 팀공격시 아군공격메시지 제거  (0) 2021.01.20
[CSGO:TIP] 허드 위치 참고  (0) 2021.01.20
'소스모드/CSGO' 카테고리의 다른 글
  • [CSGO] 스폰엔티티를 플러그인으로 생성
  • [CSGO:TIP] mp_roundtime이 안먹힐때
  • [CSGO:Plugin] HP바 플러그인
  • [CSGO:TIP] 팀공격시 아군공격메시지 제거
백고미
백고미
  • 백고미
    백고미의 정신세계
    백고미
  • 전체
    오늘
    어제
    • 분류 전체보기 (125)
      • [ 공지사항 ] (0)
      • 정보 (14)
        • 워프레임 (5)
        • 게임 (3)
        • 군대 (1)
        • 이민 (1)
      • Java Spring (43)
        • JSP와 스프링 (34)
        • Tip (9)
      • Spring boot (1)
        • Tip (1)
      • 직업 정보 (2)
        • 경찰 공무원 (2)
        • AAFES (0)
        • HD GFD (0)
      • 리뷰 (1)
        • 인터넷 (1)
      • Life (2)
        • 운동 (1)
        • 자격증 (1)
      • 소스모드 (27)
        • CSGO (7)
        • CSS (0)
        • HL2DM (2)
        • L4D2 (1)
        • BMS (0)
        • TIP (16)
        • Extension (1)
        • 문법 (0)
      • C# (4)
        • s&box (4)
      • LUA (8)
        • Garry's Mod (8)
      • Resource (11)
        • Player Model (1)
        • Npc Model (1)
        • Weapon Model (2)
        • PropPhyics (6)
        • PropDynamic (1)
        • Texture (0)
        • Animation Texture (0)
        • Overlay (0)
        • Effect Sound (0)
        • Particle (0)
      • 일기장 (1)
        • TRH (4)
        • 스케줄 (1)
        • Els (0)
        • 프로젝트 (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

    • John John한 블로그
  • 공지사항

  • 인기 글

  • 태그

    병무청가는길
    윈도우10 고양이
    경찰공무원 가산점표
    키벨류
    병무청가는법
    경기북부병무청 가는법
    경찰공무원 선택과목
    경기북부 병무청 가는 길
    경찰 간부후보생
    경기북부 병무청 가는길
    경기북부병무지청
    경기북부 병무청 가는 법
    공찰공무원 필수과목
    발표 PPT
    윈도우10 1주년
    경찰 공무원 응시 자격
    경기북부 병무청
    경기북부병무청
    병무청 가는 법
    순경 가산점
    경찰 가산점표
    원동기장치면허
    경기북부병무청 망월사
    병무청 가는 길
    윈도우10 참가자 프로그램
    경찰시험 응시 자격
    경기북부병무청 회룡역
    운전면허 종류
    스쿼트 운동 효과
    윈도우10 닌자캣
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
백고미
[CSGO:TIP] Protobuf 넣을때 팁
상단으로

티스토리툴바