Все вопросы по скриптингу для SourceMod, помощь в редактировании плагинов.
Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.
В данном разделе форума разрешено создавать темы, касающие только скриптингу для SourceMod.
Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [pawn], в противном случае, если тег [pawn] не отображает ваш код, можно использовать тег [code].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник sp плагина.
Endi » 03 дек 2009, 13:24
Подключил модуль
socket, и хотелось бы реализовать автообновлений серверной части. Необходимо качать файлы размером около 400кб, но плагин качает только 160-190кб.
- Код: Выделить всё
public OnPluginStart(){
RegAdminCmd("ucp_update",update_func,ADMFLAG_BAN)
}
public Action:update_func(id,args){ CreateTimer(1.0,CreateSocket)
return Plugin_Handled
}
public Action:CreateSocket(Handle:timer,any:id){
new Handle:socket = SocketCreate(SOCKET_TCP,OnSocketError);
new Handle:hFile = OpenFile("ucpsetup.exe","wb");
SocketSetArg(socket, hFile);
SocketConnect(socket,OnSocketConnected,OnSocketReceive,OnSocketDisconnected,"download.ucp-anticheat.ru",80)
return Plugin_Continue
}
public OnSocketConnected(Handle:socket,any:arg){
decl String:requestStr[1024];
Format(requestStr,sizeof(requestStr),"GET /%s HTTP/1.0\r\nHost: %s\r\nUser-Agent: UCP-Server\r\nAccept-Language: en-us,en;q=0.5\r\nAccept-Encoding: gzip,deflate\r\nKeep-Alive: 300\r\nConnection: keep-alive\r\n\r\n","ucpsetup.exe","download.ucp-anticheat.ru");
SocketSend(socket,requestStr,strlen(requestStr));
}
public OnSocketReceive(Handle:socket, String:receiveData[], const dataSize, any:hFile) {
WriteFileString(hFile,receiveData,false);
}
public OnSocketDisconnected(Handle:socket, any:hFile) {
CloseHandle(hFile);
CloseHandle(socket);
}
public OnSocketError(Handle:socket, const errorType, const errorNum, any:hFile) {
LogError("socket error %d (errno %d)", errorType, errorNum);
CloseHandle(hFile);
CloseHandle(socket);
}
Что не так?
-
Endi
-
- Сообщения: 95
- Зарегистрирован: 25 авг 2009, 11:26
- Благодарил (а): 13 раз.
- Поблагодарили: 20 раз.
- Опыт программирования: Около 6 месяцев
- Языки программирования: Counter-Strike 1.6
Counter-Strike: Source
-
DJ_WEST » 04 дек 2009, 00:25
А ты смотрел, чт ов результате сохранилось в ucpsetup.exe? Не уверен, что тебе нужно для записи использовать WriteFileString, тебе же надо бинарные данные записывать.
Не пишите мне в ЛС: если вам нужна помощь на бесплатной основе. Любые вопросы на форум.
-
DJ_WEST
-
- Сообщения: 3641
- Зарегистрирован: 22 авг 2009, 00:38
- Благодарил (а): 48 раз.
- Поблагодарили: 2209 раз.
- Опыт программирования: Больше трех лет
- Языки программирования: Counter-Strike 1.6
Counter-Strike: Source
Left 4 Dead
Left 4 Dead 2
Вернуться в Скриптинг
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5